{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "from sklearn.ensemble import AdaBoostClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.datasets import make_gaussian_quantiles"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成2维正态分布，生成的数据按分位数分为两类，500个样本,2个样本特征，协方差系数为2\n",
    "X1, y1 = make_gaussian_quantiles(cov=2.0,n_samples=500, n_features=2,n_classes=2, random_state=1)\n",
    "# 生成2维正态分布，生成的数据按分位数分为两类，400个样本,2个样本特征均值都为3，协方差系数为2\n",
    "X2, y2 = make_gaussian_quantiles(mean=(3, 3), cov=1.5,n_samples=400, n_features=2, n_classes=2, random_state=1)\n",
    "#讲两组数据合成一组数据\n",
    "X = np.concatenate((X1, X2))\n",
    "y = np.concatenate((y1, - y2 + 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x21da967a588>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydd3gURRvAf7PXL42QhF6VLkWQDkpTEBtWsKB+iqKiggoqVkCxIChiAUEFBVFBmoAgIkURQWmC9F4FEpKQdv12vj82CbncXQhwEIP7ex4eyOzszOyRe/edd94ipJTo6Ojo6JRelJJegI6Ojo7OuaELch0dHZ1Sji7IdXR0dEo5uiDX0dHRKeXoglxHR0enlGMsiUkTExNljRo1SmJqHR0dnVLLunXrTkgpkwq3l4ggr1GjBmvXri2JqXV0dHRKLUKIA6HaddOKjo6OTilHF+Q6Ojo6pRxdkOvo6OiUciIiyIUQTwshtgghNgshvhFCWCMxro6Ojo7O6TlnQS6EqAz0B5pLKRsCBuDOcx1XRydSSCnx+/0lvQwdnfNGpEwrRsAmhDACduCfCI2ro3PWeFwePnryc26M7k1381083nIwO9buKell6ehEnHMW5FLKI8Ao4CBwFMiQUv5UuJ8Qoq8QYq0QYm1KSsq5Tqujc1qG9xrNws+X4HZ6kFKyc+0eBnUeytG9x0t6aTo6ESUSppV4oAdQE6gERAkhehfuJ6WcIKVsLqVsnpQU5M+uoxNRju47zrrFG/G4vAHtXreXme/PL6FV6eicHyJhWrka2CelTJFSeoFZQNsIjKujc9Yc2XUMk8UU1O73+tm7MWRMhY5OqSUSgvwg0FoIYRdCCKALsC0C4+ronDXV6lXC6/YGtRvNBuq0uLQEVqSjc/6IhI38D2AGsB74O3fMCec6ro7OuVCuWhJte7TAYjMHtJstZm4dcH0JrUpH5/wQEa8VKeUQKWU9KWVDKeW9Ukp3JMbV0TkXnp/8JLc9cwOxCdEYzUaadmnEmN/foFzVxJJemo5ORBElUbOzefPmUk+apaOjo3NmCCHWSSmbF27XQ/R1dHR0Sjm6INfR0dEp5eiCXEdHR6eUowtyHR0dnVKOLsh1dHR0Sjm6INfR0dEp5eiCXEdHR6eUowtyHR0dnVKOLsh1dHR0Sjm6INfR0dEp5eiCXEdHR6eUowtyHR0dnVKOLsh1dHR0Sjm6INfR0dEp5eiCXEdHR6eUowtyHR0dnVKOLsh1dHR0Sjm6INfR0dEp5eiCXEdHR6eUowtyHR0dnVKOLsh1dHR0Sjm6INfRCcPJlAzW/7yJQzuOlPRSdHSKxFjSC9DR+bchpWT8s5OZ+/GPmCwm/F4/tZrW5PV5g4mJjy7p5enoBBERjVwIUUYIMUMIsV0IsU0I0SYS4+rolARfvPots0bPx+v24ch04nZ62L5mN2/f+0FJL01HJySRMq2MAX6UUtYDmgDbIjSujs4FJfnQCb55czZSBrb7vX42/Pw3mWlZJbMwHZ0iOGdBLoSIBa4CPgeQUnqklCfPdVwdnZLgh/GLkYWleB5C4Mh0XtgF6egUg0ho5JcAKcAkIcQGIcRnQoiowp2EEH2FEGuFEGtTUlIiMK2OTuQ5vOto2Gtmq4ly1RIv4Gp0dIpHJAS5EWgGjJNSNgVygMGFO0kpJ0gpm0spmyclJUVgWh2dyNPoyvqYreaQ1/q8dQ+Kojt66fz7iMRv5WHgsJTyj9yfZ6AJdh2dUkfX+zsSlxSDwXjqq6EYFJpd05gbH+1agiv793EyJYOJL33N4y0HM/S2kWz5fUdJL+k/yzm7H0opjwkhDgkh6kopdwBdgK3nvrT/BtJ/DNwrQdjA0hGh2Et6Sf9p7DE2Pl4zginDprNy9p9Yoyzc8GhXbh1wfUkvLR9njotj+5JJrFy2xNwh04+f5JHLB5F9Mgev28eudXtYu2gjT33yMFf37lAia/ovI8Ie7JzJIEJcDnwGmIG9wANSyvRw/Zs3by7Xrl17zvOWdtTssZA9DoSCtjmSiDLjEZZWJb00nRJEVVWcWU5sMbYAU46Ukimvfcf0d77HYDTg8/roeGc7nvqkLyazifTkDD555gtWzlmDENDhjjb0HXUfsWVjIr7GsU9PYt7YRfi8/oD2qDg7M5I/x2jSQ1TOB0KIdVLK5oXbI/JpSyn/AoIG1wmP9GyA7PGAGwq8S+XJx6DcKoSwlNjadEqOuWN/5ItXp+HMcmKxW7j7pdu4Y+CNCCH4ceJSpo+ci9vpye//y7TfsUVb6TvyPvq3fpGUw6n4fZpwXfL1b2z7YxcTNr2LwWCI6DrXLNwQJMRBewkd2vEPNRtWi+h8OkWjn9yUENI5E3CFvuheeUHXonN6pJSoqnpe51j0xTImPPcVWWnZ+Lx+cjIcTBk2ndkfLADg27dn43a4A+5xOz38+PlSVsxcTcaJzHwhDuDz+Eg5nMraH/+K+FrjkuJCtvu8fmLKnjL3HD+QwuaV28lKz474GnROoQvykkK6CFDFT10A3CHa/92kHk3ny6HTGHb7KKaPmnvRfHGd2U7e6/sJN0Tdw7XmO3n6ylfYt/ngGY8jpeS7d+dyR4U+dDX25OHGA9mw9O+APlOGfRckqF05br5+YyYAJ1MyQ47t9/nZvWEvzuxgxcDj9LJv86EzXu/p6DnoJqxRgbtGo8nAZW3qklipLI4sJy90H86D9Qfw0g1v0atyXz5/cWp4H32dc0IX5CWEsF4HIsTBpvSBue2FX9A5sPuvfTxYbwDTRszht1l/MHnINB6sN4Dkg6U/XuDlG9/m5ym/4nF5kapky+/bear9y6QdC3sEFJIvhkzjyyHTOZmciVQl+zcf5JUb32brqlOeHif+SQt5b8aJLNwuD/Vb1Q55Pb5CGS5pXANrtDXomtlmomrdSme01uLQtkcL7nrhFsxWM/Y4O2abmbota/HK9GcAeLfPWDYu34LH5cWR4cDr8jLnw4X8POXXiK9FRxfkJYelI5jbFRDmBsAKsS8jlNDb1n8r7z00DkeWE6/bB2jb/cy0bCY891UJr+zc2LvpADvW7MHr9ua3SQlet495n/xU7HHcTjcz35sf0izy5dDp+T9XrRNa4AoBd1bqS9MujbBGWVEUkX/NYjfzxId9uOr21kTF2lAMp77SBqOBuMRY6jS/lFF9xnJb0oPcWeURJr/2HV6PN9RUZ8TdL97G9GOf8sa8wUzYOIr3VwwnNiGGnEwHq+atzf99yMOV42b6qO/PeV6dYPSj5RJCCAXKfASelUjXYlCiEbZbEMZaJb20M8LlcLNn44GgdtWvsmbhhhJY0Zlx4kgqHpeXipeURwgRcO3Qjn8wGIJ1Ha/by56/9hd7jrSjJyk0dD4Htpwye/QdeS/DbhsVcJgJ2ssj+2QOU177jkGf9+P379ewY81uKtWuyD0v3UbDdvUAGPP7G4x57FPW/bQRIaDV9c3oO/Je+rd5kfTjGfn282lvz2bTL1t5+8eXArxLDu86ytyPf+Sfvcdp2rkh1z7YmZRDqSz8fAnZ6Tm0uak5bW5qHnBwGhVrp2H7+gHrzclwIMIETmWe0HPVnA90QV6CCCHA0h5haV/SSzlrDEYFxaCg+oMPAs220BGS/waO7U/m9Z7vsm/zIRRFEJsQwwtfDaDRlaeEUvUGVQIOD/MwW03UaX5psecqW7FMUBKugnPk0eLapgyb8xyfPPMl+7cE27U9Ti8rv1/DS18/FfQsHzz2Ket+3oRiUOjQsw39xjxAmcQ45o5dRFZ6TsBzeFxeNi7bzK0JD3Df0J7c9vQNrP95E0NuGYnP48Pv8/PX0s189foMPC4PPo8f1a/y68zV1G9Vi7cWvozBGN4LJrFyWaLj7KQVeiEpiqDp1Y2L85HpnCG6aUXnnDCZTbS7uQVGc6BOYLaZuf7hLiW0qqLx+/0M7DiE3ev34XV5cTs8pBxK5cXr3iDlcGp+vxqXVaXhlfUxW02BAwjBNfeGD3o5uu84n7/4NW/1HsOPk5YBcOuA67DYAw8HLTYz9w3tFdB2xTVNePyDB4mKCz4/kVKSfCDw3MGR5eTJ1i+wbvFGVL+Kz+NjxYzVDOo0DFVV2bJqR5BJJw9ntovxgybTs9LDvHHXaNwOd77AdzvcZKfn4HF681/SrmwX21bv4pfvVoV99szULMY9/QVejw8K7EKMZgP2ODv/e61X2Ht1zh5dkOucM0998giXNK6GNcqCLcaG2Wbm8k4NueeV20t6aSHZsGQz2ek5qGqgmuz3+Vn4+ZKAtmGzn6XCJeUD2qQqGXbbSHzeQBswwPqfN/Fwo4HMeG8uS7/+jY/7f85jzZ7jjmdv4t4htxOXGIMQguqXVeG175/nsrZ1g8aoXLtikHkFtJ3AFV2bBLQtmboCV4474Fl8Xj/JB1P4a9kWqtWrFPwiKsTJ4xlkpeUU2ScPV46b5dNCu8e6HG4ebzmY+eMXk5WWDVJLbxAVZ+emftfy6aZ3qVCjXLHm0TkzdNOKzjkTXSaKj/54m51r93Bk9zEubVKd6g2qlvSywnLiSFpIn3Cv28ex/ckBbckHT3BsX3Khfl4O7TzKb7P+oGOvdvntqqry9n0fBmjArhw3xw6kMHP0D/xvWC96PXszUsogezxoGvfXb8zkm7dnB5mqDEaFqDJR9Hj82oD2/VsO4soJ1rj9Xj+Hth+he58uTH9nLh7XuR9ugnbwagvhHQOwdOoKTiZn4POcesGpfhWvx0f3Pl1IrJwQkTXoBKNr5DoRQQhB3Ra16HxX+3+1EAeo37p2kDYOYI2y0LRTo4C2zb9tD/ASycOV7WLdz5sC2g7vPIozKzhfudfl5dfpv+f/HEqIg6Zdf/v2HNwOT8gzh1e/G0hcYmxA26VNagb5c4PmsVK9QRXKVohn1LKh1GwUmUhLk8XEdQ9fHfLaphVbQ75UFEWwc+2eiMyvExpdkOv856hevwptb2oeYLM2WUwkVIyn7c2BmSbiy5cJ6YFhMhtJrFw2oM1iM4cUwADWqNBabEG+HTEbVxh7tqpKfpy4NKi9013tsMcEuh2azEYq1aqALdrK+49OYNrI77nnpdsY+PljRZpZTBYj1mgr9lgbZquJtj1aYCl0YO33qayYsTro3j8XbmDVvND5k4QQJFXVtfHziW5a0flPMvir/iyY8DNzx/1E5olMLaPggRR6VuxL9z6deWTUfZjMJpp3a4LFZsaV7QzwPFGMBro/2DlgzPLVk6hWvwp7N+4P0PitURZu6tct5DqklPz05XLmfLiQQ9uOhF2vVCW71u9l6Te/sWruGmLio4kqY+fvFdupUrcS5WoksXv9XowmIx17tqVK3UoM7DgEj1sLZPpj/jrqt6rNkJmDGPPYpyQfPBEwvsVm5uVpz1CmXCwph9Oo2/wShKJwf+0nAvr5fX5+nLSMLr2vyg9Q2rF2D6/dMQq3I9iurxgU4iuUoUnHy8I+m865owtynf8kBoOBGx/rRs1G1Rh87fB8IeT3+vnx86W4ctwM+rwfRpORd5cPY8jN75ByOBVFEZhtZgZP6U+5asEFUobMHMTAjkO0FAVSE3xX3dGGrv/rGNT34PYjjH1qEn+v2IYnxOFmYY7uPc7ovp+ENF9Yoyzc/OR1PDLyPjJTs7ir6iMBdnFXjpttf+zCmeXiq31j+WHCYqa8NoO0Y+lUrFmemx7vxqJJy9j91z6q1atMQqV49m48gGIwAIGHuh6nhxUzV+cL8mkj5uBxhrbB18uN9tQLcpxfdEGu859m6hszgzRJt9PD0q9/4+F37mXTL1tZPW8trW5oxuUdG5JYpSw1G1ULm02wQo1yTNn7MX8t20LqP2k0aFOHyrUqFhrfzdBbR7Jx+daAqNHT4cx2hU7Pgyao5378I7c82Z0da/diNBuDDjhdOW5+mbGKDj3bcsMjXbnhka5IKdmxZjeDOg/D4/QgpeTYvmQ2Lt/C9Y90DRnIpBgEJssp0XFox5GQOVRsMVb6vf+Afsh5AdAFuc5/miO7joVsN5gUXr7+TfZvOYwrx4XBqDB/3E88Nb4vtS6vWeSYiqLQrEujsNc/ff4rNv1yZkIcCCvE89dsNPD3iu3EJcWGvC4Uke+fnpPp4Pfv15CT4WDRF8tCpg9YNXcNMsShsMFkpPPdV+b/3KBNXQ5tP4LfF3g+4Pf6qVy7YuHbdc4DuiDXKfX4fX62/bELpKR+6zpFRh0WxOVwU756Ikf3Hg+65nX52Lf5UL6A8/tU/D4P7z86gXY3t8QWbQs77tbVO1n85XK8Hh8d7mhD826XB3iqLJq0PGLugAEIQWxCNJd3uixkYQej2UDbm5qz6detvHzDW7nP5Q+7luP7kxk8dQCjHhyLYlCQqkT1q/R5626q19ciUpMPneDq3lex7JvfcOW48s8RrHYLNz3ejegyQXXYdc4DuiDXKdVsXL6FYbePyo9INBgNvPrdQC7v1LDI+6a9M4cpr83AFzZ5lAwZEWkwGtj823ZaXNs06NqhHUd4sfsbHNt/Kvpy6dQVNGhXl7cXvYzRqH3dPK7T28NDYbKYwmvxAqSqsmr+OoxmI28seJEXu7+B3+fH6/ZqCaykYHiv0fh8flTf6XOrW+wWOtzRhiuuacyquWvxe/20vK4piZUTOLDtMMN7vcc/u4+BEMSXi6NWs0vYu2k/cQkx3DHoJq7ve02xnmvX+r3MHbeI9GMnaX1Dc6657yosNr2wypkQkVJvZ4pe6k0nEmSmZXFP9ceCDv+sURam7h9HbELoEme/TP+dkX3G4g5xaJiHYhCo/uDvhtlm5vXvn6dZoZwhmalZ3FvrcRwZwX7kAPHl4/joj7coVy2JgR2HsOnXMytr2/nu9lSqVZFpI+ZgNBvwe/143F6sdit+nw+vx4eiaGu2Rlloc1NzBk3sx+wPFvDlK9O0kPkzwGK3cEv/7vR5856ga26nm7urP0ZWalaAJ4891sbU/ePOSAtf9MUyPnziM7wuL6qqrb1CzXJ8sOpNbMVw2fyvEa7Um36UrFNq+WX6qpDJqKQq+aVAAE5hvh0xu0ghDprvs8UenPTL4/Iw/K7R7N0UmPHxx4lLQ7rf5ZF+PIPXe41m5Zw/ST50Imy/QKT2R0hi4g5z36tdmbL3Y54e/yjD5jzP3MwpvPTNU0ipgiT/xePKcbNq7io2LvmVzSu2F1uIKwaBLcaGyWrimvs68L/X7gzZb+XsP/G6vUGfvd+nsuzblayY9QcD2r/M/+r1Z+zTk0g/fjLkOC6Hm4+e/FwLgFJPrf3onuMs/GxJUH9VVVn6zW8MvnY4L3QfzvJpK8971abSgm5a0Sm1ZKVlhzQ1eN1eMtPCVyhKO5ZR5LiKQaF+m7o07tCAaSPm4C9Ym1JCVmo2L9/4FlP3j8u3fe/ZdCCwXwh2rt3DW/eMCZlHJTTa2CaTijtjLSe3X0l8jZfp2Ktn/ryO9O2YTF58nsBzAVeOn1++GsGJw3VCjlwmURPEGalagJA1ysKAcX2p3awmiZXLEhWnadV+v5+/f91GxoksLmunVf85svtYSBdIt8PN0m9WsHv9vvzr8/Yls3za73y66d2gqNSda/cEBDLlj+P08OuMVdw64Pr8Niklw3uNZs2PG/LH3vzbdlbO+ZOXvnn69B/lRY4uyHVKLZd3bsg3b80KEipmm5mmnQNt5MmHTjDr/flsW70Li82MEARr8wJsUVYSKpflpW+eIrFSWTb9soXNK7YHzZ2dnsPuDfuo3ewSABIrxZ92vapfPQMhrtG4bRZvfbMXQ943NfMVpGM2JExBCBNlYufw+BuHMRjh1/llWL0oFikFQgGz1ccVV+7lwLZYvG5Nc61W28Xgjw9Qtbb2mR3YYWXEE9Wp1rAFne5qhzPLRfrxDExWM8kHUni2yzByMp0IwOvxcfMT17L06xUhvVmsURa2r94VUJTZ5/WTnZ7D7A8X8r9hgZkP7bG2sBp1THx0wM/bVu8MEOKQu/OYt47tf+6iXsvQ1ZP+K+iCXKdUkJ6cwV9LN2OPsdLsmsaYzCbqt6pNy+7N+HPh+vwvuDXKQotrm1K/9SlN9OD2IzzZ+gU8Tg8+r1/zwJCBdnCz1cy1D3ai053tuKxdvXyNV4bZuQtF5Ht7TB42nVljFpz+IQTYo/1UqOrh+GEzOZmBWrTJbESVMl+zNxhlvhAP8Of2rUdmf4YUkiYtNyGbSxQDtOmWyYYV0bzWpwZmi6Rrr1TKVfHx07S6ZJ1UMBol787ZTXScn7z4nEsvc/Lu7F3Yqg5jZO/+/DonBYPRhFAMmMxGstKyA3zE53y0MKwXZGxiDNnpOfi8gecEXreXdT9tDBLklzapQULFeP7ZfTxgDmuUhR5PdA/ou2HJ5pAvQZ/Hy4Ylm3VBXtIL0NE5HdNHzeXLV7/VXOoEGAwKby58iXota9Pr+R4c23+c/VsOY4u2cOuA67lz8C0B7n7jB32JM+tUiH1ePhR7rJ0ySXFUqJnEnYNvoUmH4DDyzne1Z/eGfUEeLEII6jS/hB1rdjN95PcBGf8KExXrp8MtWdSoncO1d6fi8wqMJslP35Zl7MuVkSi0u7klj713P0f3Hue5a15H9atc0zMtWIjn4fgSZA5CSETu+8AWpdL0yixaXp1J/WYO6jTRijF/smQ7331cDpNZxWJVKRhkqRjAZJEsHv84K+ZUxOtW8Lo1gRnq2LZw+bb8z0MRdLm7PbPeD36hCSEoXz1RW3aWkxUzV3MyOZPGHRowfP4LDO46nMy0LIQQ+Dw+ej3Xg+aF0vXGlI3GbDEFCXOj2URM2UDt/b+ILsh1/tVsXb2TyUOn4XF5A/ydX7zuTV6Z/gyv3DQiPyLR6/Lw9ZuzuKxdvQChvOmXrSEPRR2ZTr49PD7A1S0v98k3b83mxOFUbLE27LE2hNC28kaTAYPRwPOTn8RkNrFk6gq8RfiEm62S5z46TKsuGah+icEIFqu2mGt6ppGdaaFOh/dp0e1yAMpVS+LZSf0Y3XcclWq4wn8w0kEoXwVblOSFsQewRZ164DIJfh5+9WjYoaw2lRNHDXjcZ+/7IFXJiX9OckmTGuxctyfgvMBsM3Hb0zeyY+0enr/6NVRVxePyYjIbaXZNYybt/IAdf+4mMzWLBm3qUCYpuGZth55t+PT5KUHtQsBVd7Q+63VfLOiCXOdfzcLPl4TM4+H3+Rn9yPgATVlKcDs8fDxgIh+uepPpI+fy05fhg2+MJkNQZaOvhs/g27fn5Oc+KagBCkWgqirV6mjBMI4sJ36/P2R4OoDJInh06FFaX615bRgKfdusdsntj6ViivkCNXkDKGVBeuh89QE67bVy9EARvtTGeuAL7cJYUIgXl91/B1ckOlN+mbaSz7aM5r2HPmHLqh0YjdpL78mP+1CvZS3urv4YOZmO/P5+n591izfx8+Rf6N6n6GpScYmxvPb987x2x7v5OyqD0cCQGYOILRvazfRCkHYsna9en8Hq+euIiovi1gHXce2DncOmKj5fREyQCyEMwFrgiJTyhkiNq/PfxpHpDCsoCxd8yGP/34d4tssw9vy1P6wQN1tNXN37qoCcKc4cF9MKCPHCSFUigb0bDzDklncwW0x0urs9Frsl6MDVaDYyafVhksqHXmMeJpMbXD8CKqintGaBh0rVw91lhvgPIKVTkWOHfIbcjzJPzkgUhJBsXx8qUlUSUK/tNJgsRk4cTmPkkiGkHk0nKy2bKnUqYjQZ2bvpANkng6sQuR1uFn6+NECQJx9MASEoVzUxoG/Tzo347thnbFu9CyE4oyje80FmWhaPNnuOzNQs/F4/KYdSGfvUJPZs3M8TH/S5oGuJpB/5AGBbBMfT0eGq29uELJzg9fiIjgsdeGIwGdixdk9IIW6xWzBbzTTt0ojH3n8g4NrRPccxmIonGKQq85NrXdauHha7GaGA0QRmKzz5fjuSyhftq36KM/CFVmqCrTek3lL8ewogRKDNXSjlEIqJh189isV2yhyiKGfun+3z+ClbsQwACRXjqXFZ1fxUAaqqhn0lyFzPlb2bDtDnsqd4oP5TPFC3Pw81fDqoCLXRZKTRlfVp2L5+iQpxgPnjF5NzMifAjOTKcbPg0yWkHk2/oGuJiEYuhKgCXA+8ATwTiTF1dADa39KSBZ/9zNbfd+LKcaEoApPVxMMjeuPIdDL1jVlBB5E+ry9sgqmrbm/NfUN7hqwdmVi57BlHQHqcHqKjjzL5z51Ifw7ZGQpWu0pSpU2AHU2jjWD0tHoMnF8DRdjPzwTphdjhdO31CmXLH+XbMWU5dtiI2aJyZG/xIysNRgO1mtYMyvSYxyWNq2OLtmoZHAtgsZvpen9HcjIdDOw4JEBrP7jtMM90eJWpB8b9K6M8/1q6OaSyYLaa2L1hHwkVT++SGikiZVp5H3gOCGusEkL0BfoCVKsWmbJTOhc/BqOBNxe8yKq5a1kxczVRcXaue+hqajWtiaqqZJzIYt64RRhNRhx5ZdbCyE1rlIXGHS4LWwA4NiGG9re04pfvfi9WLhKA6nVcDHp3CWaL1j8+IEX56Qoan42QD50C4KyRLhT7zUhLO1rctIQWN/nZvKYSL1z3GVB8n3fFoPD8lCfDX1cUXvluIC90fwOZ609vsVuo37o23R/qwuLJvwQVs5ZS23n9NvMPrrmvw9k+4Xmj0qXl2bh8S1BVKL/PT1KVC5u695xzrQghbgCuk1L2E0J0BAadzkau51rRiSSOLCdbVm5n6K0jw9rEhYDo+Gim7h9bZOZCj8vDh098xo+Tlp1Wxtqi/czcthlFCeMiWCpQEAnfIUyBaXf/WraZiS99zZ6NB7Rw/BABQIWx2C0MmTEwZEIx0DyCdq7dw2eDv2Lzyh0gNY387pduw+1wM3no9ODVGRTuH9aTOs1rsfm3bSRUjKfjne3yA4YObD3EJ898yaYV27DHWLmx37Xc8+KtF8TscmDrIR5vOTggNYPBZODSxtX5eM2I8zJnuFwrkRDkbwH3opURsQKxwCwpZe9w9+iCXCfSpB5N595LHg+dHVBAzYbVePHrp6hxWdGFof1+Px/0+4zFk3/BYFTwenyoPjXkgWuVS1x8/tuOSD1CyWFqjpLwdchL6cdP0rtmv2Kn3bVGWZh+9NOgl+WBrYcYdvu7/NQN2RoAACAASURBVLP7aFDecovdQrcHOvLTF8tDJkCrdGkF/tl7HFe2C4vdjGJQeHvRKyRWLsvDjZ4JiBGw2M20v6UVg6f0L+bDnxt/LtzAew+NIzsjB9Wv0viqBrwwdUBQOoJIcd4EeaFJOqJr5BccKaXmVyxsCPHfzYP2RKvB7Fq3N6Beptlm5u4Xb+Wel24r1hhfDZ/Jt2/PCtCyFKMSZGoxGFT6jzjMtXdf2EOt84MVpcKmsFe1lL/Tc/3188xBobcgthgrAz/rR4c72uS3eVwe7qr2aFC2xIJY7GY8Tm/AC9NsM5FQsSypR9OCXFCTqiZw5W2tmTv2R3yewBw3JouJL3d9eMHMG6qqknzwBPYYW9iMm5FCz354kaI6piGTWyOTmyOTW6LmTAzrrnex88r0gSRWScAWY8UaZcFiM9P6hiu4c/DNxR5jzocLgrIYhrSXC9iytrQUTTiNmUGJRc2ZgpoxFOmchZSBB5I9n+3BW9NO0uX2dC5vn0VUjB+DUSWU7UlzwwvM7rhq7tqQ2RIL4nZ4An9vBVStVwVrtCVkHEFWWjabft0aJMRBO2w8uO1w0c8cQRRFoUKNcuddiBdFRAOCpJTLgeWRHFMnPGr2VMh+g/ziuDITssYgMSCi7i/RtUWa3X/tY//mQ1SpU5G6LWohhODEP2nknMyhSp1KGIwGEquU5akJj/DXks3ElI2m1fXNqFHXAeo2pFIfIU5vN83JcJy2D4Dfp7BsdjyPDv2HqNiiDkYVzsi9MNIoSWC9AZzTcqNBC2MGNQOyRgFOpGsOZH8ICTMRSlmti28rlzX/h8uu0O73egTffpjEtx+Ux+cN1Mw9Li8TnpvMsm9X8ubCF4lLiCX1aHpIgVskEg5uPUS13EpEoahSpxL7Nh3MLyqSh9ftpVKtCmc2XylHj+wspUj/Uch+nWAh4YTssUj7fRc8uux84Ha6efnGt9m2eheKIpBSUqlWBezRVnas24vBqCV3un9YL6a9873mviYlfp+Pf7Z+xoARh3MPIq1QZjTC0iZojuMHUlj300ZsMTZqN6vJttW7irU2o1GSnmIkKjacd8f5+vyjQESBTAVOIyBVN0QPAPdS8B8h/6UPgAIiDuSpikZIB/g9yKxRiLg3c8dIp+Dm3WSW9H4mmaMHLKxcUBZXofeDVLUUtXdVfZQPVr7BZW3raucNxXWrz1u6X9L5nis5vPNokItpmXJx3D+sJ6vnrQ0Q5GariaZdGlGxZvkzm6yUo5tWSikyewxhNT15ksAvbOll0svfsOX3HbgdbpzZLlw5bvZuPMCW33fgdXlxZbvISsvm4/4TSTl8AmeWE2e2C4/Lx7KZZpbMsGjCSaYhTz6K9KcEjP/lkGk8WH8A457+glF9xgYJcSEEiqKEfSmWqxzuEDDvqxVpbdwEifMRiXPA3JbTmk1wQc4kiJ8M9ntAKQeiohZUlLAYZKgiFz5wLS4wZWPN37wAQsCzY1J4aUoLhBL6s/G6vLxx12jqNL+Uyzs3DCjUIYRAMSjUa1Wb+m3rhrxfMSrc8mR3mnRsgDXKgsFowBZtJSrOzpAZg6hSuxLv/DyESy+vgVAEZquJrv/rxCvT/3uhLLpGXlpxrwh/TUlCCNOFW8t5ZNGk5SGTUhW2t4Y6F3A5DMz7IoGrb889kJQq0jkHEf0wAH+v2MZ3784r0iNDSkn/D5oy/vm1uJ0i97APLDY/vQcew2wNZ/g1ciZ+2MXDCvY7UYyVARBlP0f1/QMZL4B3VZh7PJAzHnImQNwIlNiXkNKNzPkC0u8ivI/lqReEUGKR0U9C9sec8mO3IAyx1GleG8HasKMkH0rl+IEUhs58lvkTFrPw05/xef1cfW8HbunfHYvNwozR89n2e7D3jwB2rdvL8HkvsG31Tv5esZ2yFcrQ/rZW+QFC9VvV5pP1I/F6vBiMBhTlv6mb6oK8tCLigJTQ16IGXNClnE/CFhsuJi5HwS+2G9RTGuiiSUvxOIve7/d68jhdrp9M/QYmJr5VgW3roihbzstd/ZPpdEvoEmYACFuuFltYxJ2tpm5AlBkJlq4ASP8/yJPPg3cNcLqXdu7hZcazqKaGkDEIvFspMjrUfEXAj8LaDen+Dbzrc1u8oOYQY3gdVV5CODOS3+fXUg8bDfTody09+l0b1Of4/tD5aDwuL+8+9AnD5w+mQZu6NGgTWnMHMJkvDsXlbPlvvr4uBqL+pwmLwhgbo0TdccGXc764omsTlDBb99Nhtqp0uKmAsBX2ABu521m0J0V0nI97nj6OxeqnZn0Xr0/ez4wtW5iwbGfRQhwBttuAwjliBIh4zkp/st+LsHZDCIHqXIRMuRq8f6C9EM4gp0v2x+DbzmlD/A01UVNvR03ugJr+JPJED/D+ibbL8OTOm4Pfm1PkSYDqU/lq2HeAljph2bcreeeBj/j8xa85uvc4AOWqJWK2hhbEh7Yf5olWL5CTcboo2f82ukZeShG2O5C+XeD4FoRZ0/5MjRDx40p6aRHlsdH/Y8vKHbgcLtwOD2arCVWVKAYlIEuhwagghB+Q+LwKVrufhPJeut+TmtvDCsYGYL4y/56Ovdqy8vs/w+YTr9PEidcj8vOHFxulGiJmENJQBbJGgDChaeYWMFQAX+rpRiiEyC9VpGZ9ADkfneH9eXg1jTqk90ohHJ+Sv5twh89lbrZILrnMyZ7NodPgSilZPu13bn6yO6MfmcDB7UdwZbswmgzM/uAHOt99JUu/XhHWvKWlJnbz05fLuaX/9SH7gHYorhiU/6xmrgvyUooQAhH7EjL6MfBuB0NFhLFmSS8r4lSoUY5JO8awaNIydqzZTc3G1enepzOr56/jg8c+za8P6fepmK2SSxs6cGUbOLzXQspRE/e3bkCPB1N44I3/YYjpHeCCuH7J30UWTD55wojJXJQJJAaEkmtCcZK/wVUPI1NvQ8S8AOVWgXcD0r0KHFPBt+UsPgUJ3j9QHbM0W/e54N9X/DmLyTsz9nB30wa4nQrhTCzfvDWbA1sO5ed393n9+Lx+Fn625LTjux0edm0Ive79Ww7x3kPj2LF2D4oiaH1Dc56e8EiJ+nSXBLogL+UIpSxY2pb0MoqN9G5DOr4A32GwtEHY70EogVnipG8vuH8FYQVrV2Liy3L7MzcG9Ek/dlKrwF5AEHtcCjv/isJgVPF6TlkNv5+YhK1cDL1fOeU1se/vAyyauDQo4VFBDu02YTaHuyogZgDCfge4fkI654LnD/IPOH3bkOkPg+1O8G0D7zpO6ypYFP7jkPkCEc2kGCGiY1XGLd7JsAdrcGCnlcLCXDEa2P3X/jMuPJ2HxW6m1uXBSkrGiUyeuvJlHBkOpATVD6vnr2Vgp3+YsPHdi8L9trjoNnKdiCHVNKRjJtLxXZCbH4B0/YxM7QXO77VDuuzxyBPXB/RVM99BnuiBzBqFzHwLmdwR6VoWNNbaRRtDbsdVP3hcgS55bqfCjPfmB3i2/LnwL3y+ogVrnctdQQEvBRHWaxDCBtbrcg8BCwsqNzin5NqWz0GIQ65L6b9PiOdRsYaHmLKhXV5NZgMJlc4+pavP4yMzNSuoMMWPE5fidfsCzjl8Xj/H96ew+bftZz1faUQX5DoRQXX+gEzugMx6HZk5HJnSGTXnVCImKf3IjJfQDtnytGA3qCeR2Z9ofTxrwDlVa8eDZq5wITOeQqqBX+Jy1RJD+i/nuQcWxpHpCAgcsUVbMZ4mQ57HLYqM6ZHpj6Jmj0X6DoMMJ6hLMKrzArJsThybV0cT+IFpEnbE4lfp8Xj3kAVCQqEYFAzGU6LJ71P5btQ8Hrl8EJlpWfntB7YeDlnNSUrJkV3h7foXI7ogv8iQUkWqORHNtyKlRMrwAUbSfwIyBgPu3IM0p/bvrLeQvoNaJ/8hkKE8JXzg1jRu6fw+TB8FPL8FtNwy4HrMlsCDLYPREBB0UpCKl5TPr1YDcOXtpy/Ye2CHFSHCfY5SM5lkfwzpD/Bv1pYvBJ+9Xongt57284Eth7jq9tZcc39HzFYT1mgrRnP4l2ibG5tjtgb+P3pcHtKPZzBrzIL8tnota2O1h345XNIkbJ28i5KLTpBL3z7UzBGoJ59FOuchZaSDMv6dSClRs8cjk1toCbRS2qE65pz7mDmTtaRcxxugJl+F6pwX3NG9mNCqqx/p+kH7p4ghrHlBicvvH14gBmq2dZtfyqCJ/YguE4UtxorZaqJeq1q88NWAIGFusZl5bHRgWbf4cnG89O3TWKMs2GNtmKyakDeaBWaLitmi8sDgFIyndYLwgvoP2g6iJEqPlWy5szxczvCi5PjBEwgh6P/RQ3y2eTRPftiHGx+7NqSGbraZadi+XsjdltftZdXcNfk/X33vVdjj7NpZSd79VhN1W9SizhWXnuMTlS4uqsNO1bkYMgaihaf7kK7FWnhywtcI8e8rFRVJZM54yBkHMjfyTj0Bma8iFTvC2vXsxnR8AVnvkx/Npx6DjJeQwoqwXlOgY6jAFwAVcl+kwpCANF8BnjUEpg+wIaI0ISusNyBdC049Q/74PjC3Dxq9Y692tL+1FYe2HyE6Pjo/benIJUP54tVv2f/3QSrXqcT9w3rSpMNlQfe3ubE50499xvrFm5BSUuOyKqxb/Dd+73HadsuiXFUjZL9P8cwjealdLWimIQNnZhe3cnbl287R9h4hLm+bze8/xhHqhd62Rws8bi9uh5sKNctR8ZLyXHm7i2Xf/IbH6clPO2wwGkioGE+r65vxxSvfhpynTFJc/r/tMTY+XvM2nz43hdXz1mGyGOn2QGfuG1r8OIpV89by1eszSD54grota/Hg8Lu4pHHp0+Yjmo+8uJyPfORSepDJbUBmFbpihZhBKFH3RXS+fxNS+pHJLUBmB1801kZJ/KHo+317kM45oGYjrF3A3E5rT24JMiP4BsOlKEkLC9x/EHniekIHpljB0gER8zwodmRaX/DtBGHUXgD2exExzyKElhBLZr4MzvloQs0IKBD3JortRqR0g+sHpHslGCohbD0RxqILRZwrasrN4N96BnecqQA/1/v+HWSkGbi7aYPcw+E8YS5p2P4SqtSpyZKvVyD9KolVEnjqk75ccU0Tju1PZnTf8fy1bDNCCFp2b8pT4/tStkK8llt+/b4AryKL3cIr05+h1XXNIrLmhZ8v4eMBk/ITcgmhzfH+b8O5tEmNiMwRaS5IYYnicl4EuWc9Mv2h0MLMdDlKQnAZqYsFqWYhk1sRMlGWsKOU/yvsvapjJmQOI28Xg7BryZji3oHkFoQWLsGFCNTscZA9jlNRfwXRsuyJpB8RSjzSt1tzpzPVP5UqNe9ZpATvJqR7GUJEsW/35excn0Vi5SiaNBmKQRzNtcMbARMi/mOEJVhb18Zyge8QGJIQSpmAzwuZA0p5QIJ7mWafFwaE7TYwt8t3Xdu4bDnfvP4uVrubFp0y6dorDcNFtY89W4LrjaanGBk9sAobV0VjsQp6PN6BXX85WfdToIeRxW5mzMo38oWlz+tDKAKD4ZSZKPVoOi9d9yZHdh1FMSr4PD7uHXIHdz5/S0RW7/f5uaPCQ2SlBcoLIaDldc0YPu+FiMwTacIJ8ovnV1JYCbsFFqWlAEAgUvrBvRTpXgoiFmG/A2GsFdxRRGk2aBmiWk2o/nnjq5mQOZQATVo6wP07uFdptms1LcSYNYKalOjHkJaOSMdX4JxJ4P+FCtKBdExDRD+qPUOhdUkpNT9s324w1sRv6cfwO99n3aL3EYpACB+x8WZGzfJSrjLkm8/S+yGjn0HYbw4Q1mr2BMj5GNACdqS1G8Q8B5mvgvs3rV3Eg7E6+P7Oj3aU7qVgux0R+wq/fLeKkQ98htthBaysWlSGORMr8OGC7fnFlv+bmMFyPbgXUtAcFJ9k4rXZDyDstyKEhZTDqXxT58mgyFmPy8u0d77nxalaTqCCh9B5JFSM55MNI9m3+SAnkzOo3ewSostE7nucfvxkGI8X2P7n7ojNc6G4eA47jfVBSSDIRidsCPtdJbKkc0FKHzK9DzLjWU0wOiYjT9yqadCFEEKBmIFodtaCWBHRz4afxLMqN3y8MA5wL4Dop0OOSdTjWtKmQi53wlQfYblS0+qDcIM39M5AqpnI1Ju1NLNZI5Ann2D223ew7qeNuJ0eXDlunNl+Uv4x8na/aoXudkH2SGTyVajO7zWvHed8zZtEOjXNGw+4fmLHz3cw7J79PHTVJbzTvxyHdqVr+UoKhqxLJzi+w+/ZyQf9Pg3Ig636JQe2m3nzsbr8Ww4ZSwYjIqYvxA7R0uICKIkQ+yJK1F0IoR1i7t10ABki4EqqkkPbjxRrppoNq9G0c6OICnGAmLLRYY/Vy1W9MCXiIslFo5ELISB+PDLtvtzDMqkdktl6guWa097/r8P1I3g2cCptqF/7kzkMae2GUKIDuiv2nkgRhcx8I7fggARhQ/r/KcIVOmzYIggrir0XKlbIGaOZQgzVtIozGQORKNr4MS+i2Hucus9QLYxPtRmMobPXyay3NE2cXM1NulnwpQwuueZX2LnRTkaqgbiEgnN4tT8ZzyGzRubuzgIPTNcuN/NanyQ8Li0V7eE9ZpbNLkO12i5ad83k5j6pxCflmaZU5n40lczUwuct2s5hy58KiLK5ubz/TW6HUWimrdNljIwFMs9hHgfy5ECUxDlgvw0pfQgRKEr8fj9jn5qUn0KhIIpRoUGbOucw/7ljsVno9kAnfpq0LCDi1GK30PuV0pd07uLRyAFhrIVI+hVRZgwidhgiaRFK7EulMlRXuuZTWBgB2iGhZ01wOyCRuWcEucJFpkPW0JBaPKCF9ofzDzc1BkCx90BJWopSYQuY6oJ3A5qwcGnjZ76q5RHJQymba3oppOkLU/idkXMBhYWPxx36/0wIrdRYaCSoyeA/GNgq4aMXKuN2KvkBQ1IqqH7B/u12vv2gPPe1qsf+HZommZ1p4rOXw0cGJpT35FbVuVBCvGpu2uLT/B4rcYikJWF2RHmYIfpRIETmzDPBtw01NyK3sBAH+HPBBtKPh8kQKSVLpq6gV+WH+eLVb/GcY6ris6Xf6P/R9YFOmG1mLHYz0fFRPPre/bTt0aJE1nMuXDQaeR5CGMFyVUkv49wJ+2WUuRpnCLLfI8iFTTo1Fzp7cBV5ISxIJR7UEFFwzllQQPBKNR1cPxMchu5E5nwCxurI9CfBtwPNfp23pRZgrIOIewthCFdHMVhru/KGk8z7IjEgZwpAYkUfCRVO592hoAlZTdC6HArJR0LtPkT+3x6XwnvPVOGDH/aw/hc7RpMZjyvYHVAxqAx6/9Bp5i+KvEPCM/BSUVQwd9FMYepxwp4Fqce0zzj+S2T6IyALn29YNDdO9SSYm4JnPdr5yNm8kKT2+xB1Fx63lynDvmPBpz/jdrpp1qUxVepWCtpR5S/TL8nJcJCT4WD6qLlsW72LET+9wuFdR1m/eBP2WBtte7TAHnOOL5vTYDQZ6f/RQ/R9514yU7NIqBiP4TTRvmfLvs0H+f6jhaQcSqV5tyZc+2BnbNGRe76LxmvlYkO6/0Cm9yVIKxfxiHIrQ2pB6rH6hBMOovx2zZZecA7pRR5vSOgvshmlwuZTfb27kGk9c23OhVCqavLJfzjEWIrmKpj4I0KENuWo6f20mpIFBFTWSSNPXleX9BQLrhw/ZqsJg9HA2wv7Uq/BLHD/RHgTggltQdoLxe+DG2s2wu8/zQZUSBYc3MvqlQMY1XcJjszCOyJJ7SYOPlywm7Pf5AkgGqxXg2suZ+5yaCR8GT8FpYK2k9BSIrwArgUgLJo/v4jJ/f9zkp8r3dQWvMG5bIqFuT1K2Ym8ctPbrP95U75nilAEVrsF1a8WK1GWYlTo1KsdK2auzi8BB/D6vMEh/f9LGytm/cGIez/A6/Gh+lUsdjNlK8Qzdu2IM7b9h/NauahMKxcTwtIKovoAFk07F1Ga50r8hJBCHABD5dDtSoUgIa5hDK/5F/AA0bpWJbQmqICheq53S5igIDUNXD+FngcQsa/mHlSfWktMGR/jl2zl8eFHuKZXJnc914iJW4fSoN2ViDIjwNyS8DZ+A5QZA9YbwVCVLRtaaSap06AoCkqFlTS/vhc+T7CwNJgkjw49ihDg98HvC2P59PWKzJ2UQNbJ4mpyEnCCP5mzy8NSVC1WifRoB8pCGFDKvINI+gXixkDUI7lmt7yXk1v7c7ZCHED6OLTjCOuX/B3gXihVid/nx+spnslE9aksn/47HpcXt9ODM9uFM9vFkJvfKfYY/1Z8Xh/vPTwOt9OT7xPvdng4cSSNme/Pj9g8uiD/F6PE9EckLUbEDoHYdyD2TaRzFmrW+6dymBQk+hlCeplEDww5vhAC7PeFuMcGUQ8V6muF6P4E2lYF2iFmVYostSMdSF8BTVHNzs3fIpG+A5q2mPgTIvZFMNQkz+RhsUm69jrOoNH7uPvRLylr7IF6UnsWET9RKyhsqEGAQBc2sHZFsXZBKTMSJWkJi2a0LDJdbR6tb2yOwWDTcr2HqkokBWUSvThzFJ7sXpsR/asxY1w5Phtekfta1WfXJhsYGnD60ms+8P5O0SaNs/HSkMjsd7V/+Xajpt6PTGkHJx+EnA84u8jRIvBtZN+mLSE/W4/Li+ov/m4/VF541a8y4dmv+G32n/i8pbOY+IGthwOSteXhdXtZMXN1xOa56GzkFxvCUAFpvRHSH9Lc93KDYWTORGTcOyi2UzUQFdt1mo6X/S74j4BSEaKfRrHfFH786P5ImQWO73KjLf1gvw9hvz+orxLVB2morGUr9B/N9Q4S4PoeKKrqjAJKZdTssZDzmZYYS0Rp7Xnh+IYKmhathjtEVNHcCBcjlQSU2BcRlmbIxB/AOVuLTMWo5Qe3Xq+5RqrJIGLxusKVdDvVmFBB4bkvngDgjx/WB+TvKNj/p+llMRgNHNptxePW+ridBkDy9uM1mLj9E8CvRboWpxJPWM6ytJl3B9J/FJnaM3RwXCSRfqJtS0PuXoBQMUNnhDPbxZwPFzDnwwWYzEZGLRtWpLfL7r/2Menlb9ixZg/lqiXS+5XbaXtTyR5c2mNt+H2hlYhIulSes0YuhKgqhFgmhNgmhNgihLh4Kv/+W3DN11wR8wWDD3BB5mAterEAiu06lKQlKBW2o5RbVqQQh9wteOyriHKrEAnfIcqtRokdGN7Tx1gbLB1ysxS6AGcxBJYKrsWQPT5XuPi00H+ZnjuGC/z7kWn3UlC32PGXjWduvpQbajTizssb8N24RFTVBY5p+dkdhTAh7D1REr5GSZiMsN2IdC1EJrdFpnRDJrei9dW7AtKi5j+7Ao3bZvPMe4eYuslAVKxm2nFkOpBq8JfP71PIzjCwdFaZfCFeYDSOH7aRfMSAMFSG+Cm5u4VwnE7CmQiu+VkMDJWQORPP8SVSXDyUK78p7NXKtSoW6/DQaDaG3gEVwOvxMbDTkLBZPXdv2MfT7V9hzcINZKRksmvdXt68ewwLPz99BaLzScWa5aneoEqQYmCNshRZuu5MiYRpxQcMlFLWB1oDjwshGkRgXJ1cpHMuIV0RUcCzDindqDlTUVPvRk17GOlaesZpbIUSrblvKuFd19Scr5Anboac8WHWUwTe309/j/SBqSFg5sBOC8/ddilb/ozG61FITzYxZVQFPh1WEc2+6+XwrqPsWr83YNstPX9Cxgsg03Fke5j+cRxjnj5eSCvSPFqeePMwI2fspdudToStW/7VZlc3DmkWsNr9tOmaicEQWuh43X561+jH3dUfYtnEAeDfX8wPJxQqGJqc4T0KIrp/bvzBhYg8NXEyvSKhjl9MFiPXPtiZipeWxxod/oVkspiIr1Am7PWC+Dw+lk9bGfLaxJe+weVwB+y83A43nz7/FX5/yeawGTrrWSrVqoAt2qpl2rSYuPGxblxVjFTKxeWcTStSyqPA0dx/ZwkhtgGVgTPJNKRTFGEzN0otMCetN3h3kicopedPsN+NiH0+YkuQ/mStkHCxK7YXpjiCxQ2mpiBz+GbMySBfcrfTwPzJiXS9O5oR3V7gnz3HtCIEBsEzY6+g/S0tkNmfAi4c2QqPd6tD8hETPk+w9myy+HE5FMAKhsoIW8/8q+WrJ3H7wBuZOXo2bocKCKx2P43bZnNFRx/XPnA5X725I6xHRsqhDEYPLEP2SQc3/i9EioNiYQB/6HiBsEQ9ibB21jTyCOH3gyNTIbqM9v9XcKPm8ym8NyA7ry50ABLoen8Hej57E38t28Liycv5ZfoqVL+K3+dHMSjEJcXyv2G9mD9hMSkHTxRrPcf2B1eeAti5NnRYvdup5TFPrFQ25PULQbmqiUzc+j7b/9xN+rGT1GtVi7IVzr5iUigiaiMXQtQAmgJ/hLjWF+gLUK1a4TDrixdNM/YCprMPTLLeDO4lBG3HpdBsyt5dBGq7TnB8hYy6F2GodPo1qg7N/U9mgrktIkQuFdzLOfsNnAHtQPU0dl9hQVhaQ/QT7N76KGqIPC8Gk+Sle8qRfuxQfvpTgBF9fqVKpalUr6PZhX+YUpYTR0MJcQ2v28DuLdUg5nqE7bagncgDr99F0061WTj+XdzZaXS61Unba9NRontz66BnWL/sTTav3IE3TDCL22ngi3cqct29aRjO2DXZmPvnDHLp2x9DiXk89/ZLc8vLFXMuQ61c19FAm7rLIZj3ZQJfvlOR5h0zaNs9k443ZWA0SfZujeGjl6tyaEfoF3RcYmy+sGrWpRHNujTi7hdv5ecpv+LIctK2Rwsu79QQIQTzx4f3aCpM+1tahmxPqppIxongSFyA2LLRIdsvJEII6reqfd7Gj5ggF0JEAzOBp6SUQfG/UsoJwATQ/MgjNe+/GdUxB7JHacJWlEFGP4Gw9y6WQJdSRTomQ85ELbd4SJuqH1zLCHnQKAxaBKitR/C1vDnUHGTWKHB+g3YypVVBl7ZeiNiXA9cpjJw2sjAchnpgvxOy3iS8m1zQ/gAAIABJREFUecUKxoZIzAj/YapfVpvDO/8MMhF53Qo5JzNQ1UDp6PUI5k+28/hwLe3uqkVxeFzhXzwWm5larXqhRJ06Q5DSg8yZAI7pIN00vuJqmnz9oXYeoB4FYy2EEo8ZrXzZJwO/ZNaYH8Kau10OhayTBsoknOnW3k/Rh8cFMYGpESLmqfwWYW6FdM4mvJdKXnrgt1FsN+S3qu4/ydz7EDmZKplpBmZOSOKX78sAglWL4lm1KJ73npYoBhCKCX8RniSZJ7KY8d48KteuSPNuTTCZTVStW5kHhgdH915zXwcObjtyWp/zhu3rUbVuaBfb3q/czlu9PwjIjWOxm+nep0tQtaGLkYi4HwohTGhCfKqUclYkxiztqM4FWqY9NRkt70s6ZI1COqYU636ZNQKyRmvFHML5Dos8YRbqfSyCfcELji+dyNTbc2tkqmjCwwt4wDkFmdYT6T926gZLZ84uX7YNkTAJJaqX5v9tuFTzXTc20irMG2qDoQ5YrtSyEKY/gDxxHXf2W4vZFujGZ7GpNGyVjRLit1b1C1KOmMmTqlrelNASVigCs83MtQ92CvxM0h+H7AnaZy7TNW+Y1FtBiUeYWyCUU9thIQRX974KUcTLTVEkUTGBGuvGlVFM+zgJt7Ool2Ix9RwRD1F9EGW/CHzpWq8GQznC62k+wIPMfI3jB47iyhV+/2fvvMOkpr43/rnJZNrO9kLvCAiCgoBSLVhQRAUFKSpSxIqC2FHBBnaxYEHxZxcLKiJWFDuIiAUFpRcp2/tOz/39kdkyO5nZXVgU+O77PDy6k+TmJpM5Ofec97xHsfXm7RenMqHfkVwzpANfL06m+svbkDiw4HDZYjJO/V4/L97xJvdd+Dijml3Gpl+3Rt13yGWnccSxbXG4jBCi1a5hc1hp07UlFqsFZ4KDEdefzUPLZ0Udo9+5vbni0XG4kuOwOqxYHYYRv+yhw7cPQVXsd2WnMJ6gl4A8KeXUmvaH/43KTj37NPNkl0hGZKyM6ZVLvQiZ1Y8a49HCCYn3Q8ENRHpfAhwXIOKnRmh+A0Zj5OLZxFy+K40Q6cuMUn49H5l/Pfi/jT2niDGaI9I/itmhSXq/R+ZfUe0aLPz6Y1fmzWjKzvW7sDt1hl6SxZCLc5g08Ej8EawRSbc+Jcx+Yyua1cran3syY2QRXpMWZD1O7cY18ybRrH2TyqP9fxmUvYj76ID4m1HiDE9SBrNBzwdLa4SwMqLxJAqyTJpvIDl3Ug5X3LW74pMt62xMHdqe2+bvoPcg8zBA7aGCcBksIMuRxgrK2oOyYjclBaWkNRFQ+hC4lxDtOy4rUbhl1BFsXBvHaRefyFEDOvHwpKfRo9DlgJAmiYvjzuzBZy8tJ+Cr3cs9PsXFI1/fSesu4WHVguxCfli8moAvgCPezrY/dpDaNIWTx/QP6wZUWwQDQfIzC4hPcWFz7APr5yDHgdQj7wdcBKwVQpTrlN4qpfwoxjGHP4K7zT+XhRieb4zlXnC7IS8razLkSQjbachEHYpuDVECy39YEtyLkN6vIe0jhFKNs+r9khpjsLIY6f4YGfgDyt4kdlVhOAJ+KMix4HDuZv3yMynjbk4Y2df0BSaL51JuQL9enMj/3deEzH+sZDTzMGHOyQwccSZkd0MIIx499JIclryYit9bNbwi+OsXJ0/e0oxpj+p0O/MFLn3gE5678VUsVgvBQJCMlunM/uhWGrVKj5ywf53BR4zwa9zgX4MePA0KphqiYcKQAJDxt3LLa9cwY8icCC51s/YuLrsrN+yzGWPa4XVb2LnJRvcBxWj7vOIPEbTLuzcF/sD9z3gevfU8vl/8F4oisLvsTHliIgNO/hMC5gJgiirxuiVBf5CPF3zBpy8uj1o4pagKvQcfQ4/Tjua0cSfiLvHw7aKVlBaW1qrwpzivhCt73sxR/Tty5/s34Yiz8+XC73h4wlMoqoKUIHWdifeNZfh+0PJUi0pas0NPhnZ/0aC1coCg5wyBwMbIDUo6Iv27GjzyPGTWQMwNrWpUL2JFpLyE0AxpWN2/HnJHmBzjgPibUOLGhM+v8JZQA4gaoPUD/xpqSzeUEt6el87rjzdCDwiEIjl5eD5fLU6hffejmLFwKlk7csjdnU/H3u1JbZKEzOwCBPnq/SQemd48VGBjwObUuOTuMWT9/Qy7Nvs4ul8Jg0fnMX1Ye7b9FSk6pNl03toxDVe60TXIXeJmw+otJKS6aH1US5DFhv6IngfWnqD1QgiBXvIilMwh0pLbQDsW/CuJZN7YEcnP8dnCMp6Z9hIBf4BgIEivwd256eUpOCxfIItuB1lKMABntuwGCBq39PLMFxtwxNWOIuh1W/j87SS+WpxMRjMf18/dgaKEz3PW+Nb8/FUivirvfpvTysI/CnDaI59DKSF3r4Wxx3amptyHxWph4uwxnH/d0LDPs3Zk88pdb7PstW8IeGvnmWs2jZPH9GfinLFc2ObKiOYOVoeVp39+gJadoshN/I/jsG/1drBBer9C5l9D+FLdDgmzUJzDI/cPbDcSbb5fwdLWqHj0rap2vA3iJiO0o8DWL0yESroXI4tmmheC2M9ESZpbua8MGtWZpY/FvgjhNM5p1nkobL84I6EZ+Jmlr6Tw9B3NqoU+yp8xw2BYHVYsmkrAF+CEEV1waF/wzyaNv391UlpkskgUoKqCYEBiswdxJQYRCuTsiXRpHS4r8356gBYdmyFlIFTdmYRQnEjfb8j8SzA6FnmMF6LWA+Jvg9xzMU8OWkPzjrI6sg5ESXmegD/A3q1ZJKTGk5Aab1x1MAeZfVLFsaOO7kx+thH379K7hOse3kmTVj4jeRjFlnrKBFPO7EDmTitet0Lbzm4efm8Tziqx97wsCxcfZxZugstnuxh2yc9h1yYl6DpcddoRbF0fS/IWVE1h3KwLGH1L5DMLUJRXzKhml0Vl75hBs2lcOfcSnpn+clhyEgyPesyM4Vw8s5IOGgwG2fLbdjSbRqvOzQ9JWer6wuHf6u0/ggzuNbw7S7uKzigAwnYiJD9uNDoIbDdK0F3TUByRy0bp3xBSFvQCQQhuAmxg6wfe7wE/qC0QCTMRtn7mE1GbYu5ZWUP6JaFz6YXI3NFGCX9MqIYGdqiZtZRmxsYOljaI5GdBuJA5Z/HSA0kmBiX8QJ/bhy/k4H/+yq8oSgq6HqOeW0IwYGzzelQCAUFaEz9CkUi9WjJOD5Le3IFeeFsoPmwYPOk4Bzxfhas3yjLw/wyFMzFXUhQYFZYxaJNBQwLYollo3iGc6inUNKRrCpQ8CXgZd+Nenr7D0EX/c5WLiQM6kdZU5daXBtDlmJXk7trKDx/pBAKC408tokkrH0teSmXXFivBgHFP9+ywomrh9yl3r4ZmlfhN3jVLX4nniKOa0b7LFoSQgMDvE1w/vF2NRhxAVVUGXRhdFvr9Jz5GN6mCjYWgP4DPGzAtWpO6Hham+vnz35g99jH8Xj9Sl6Q0TuLO92+idZcD23T7UEODId9HSL0AWRCqohMWQCJdN1UkxQCDVWDtD9YTEI6zEJp5wassvr+aJy0Bj9FtPmMNQvgRogbtYq2n0XYruIMwdomwIJwXVDnXfUYMPmYXGUGZbxBurmHzytk8c2suu7bYSEgOMuLKLEZcmY1QMyD5JRStXeVhKS9RmGcu0BULeoUxrp2nFQwoZO60hioKZcVxNkeQ0VP9WItPIMKDdr+PKetGuiEQUfYQgoPY3HeL8bKtOpxeaCgbWpojhAPFNRlpPRbpfoszJpSguNrz8j1/kbs7n0at0pk4ZyxdB/Xji9eP5pFJzyDwouuSF2Y3YdikbN6dn15hxAHcJSovPdCIU0cWsHWdnbQmftod5Sboj7x3qkWlJN/NzSOSaNbmCLr0KiUvW+OnL+IJ+CO9d0VVsNo1PKXGvbPH2Th3yhlktEiLegdWf/qrqeAVGDojkVLA0K57G/qf24sFN78asU2za/QffhwAWTtzmDnswTCvfffmTK7tN4PRtwyjTddW9Dz96LCmzQB+n581y9ZSVuTm6BM713vxzcGIhtDKPkLPuxh8PxNuEB2I5KcQtn7oRXOgbCHGkjakEui6HMV1ZeRYmd0x1fnGgshYFdHWrRwysNkQkZJloHUxaHzFs8C32jin2gSReD/C2qPKuY6JocNhoazUxaO3nMuKJX8gpYxI4tkcQc6/PJ9xs+8xXR2cpo6ISUurX1SeKCElwOSZezjl/IKQ51lPEGkYLd3MtiUj0pYg1AyDg154W0j/WwOpg+syRNwVYaEAqeeBXoRUmqEoRpilILuQsa2uCJOCBSMZqQch8gUnUS1UNIBOShf0O/c4Ppz/eyWVUBHYnDaCgWDEuGawOa3c/9nt7N6UyfKF3+Fw2Tnz0lM49tTYMgF3j3yYbxetjPjOrQ6NWYtuZPaYuXjdPvxePxbNgmaz8OCXs+jYsx1vP/wBL97xJkF/AF2XWO1Wzrr8VC5/yBBse/Wed3j93kX4vZFJdkVVsDmtpDVLZe63d1eEszau2cLNp99NwB80nl9/kLEzzmPsjMjGKociGkIr9QgZ3BPSs6j+A3EjSxeAkgxlb1AZlwx52CVPI+1nISwGBUsGtkBgG+DC3PNTjaYAJtBLnjEaDOOj0qCpYD8PHK0huBfsp4e0S6pOPsYy2HE+914i+e3rtaY/HjAqFhfNb8KY2b0p2JnD9nX/0PyIJiQ3TuKnT34lPjWeoigVdvWPSgNXlGfhqN7ukFZ7PWpYyxIM8aqqHr4A2wmIhLuMlQkgi+4x+qziAxlK4JU+i1SaIJzDDEppwfXg+4Hy71VPmIniGMIPi82dGnMjbnwWDIA7YHiiXo/CHz/kM+25y3nz/vfJzyrk6BM60/3krsy/8RVTQy6EQLEoNO/QhHOuHMwpFw3E4XLQpW8nTr34BMDQ0vb7/GjWSFnesmI3Hz77OTv/3o0QIixMolpU2hzVkl6Dj2HBukf5YN4n/LVqE627tmTYlDMrWEMjpp9N7zO6s3zh9wR8AQac34eOPStXeLm78qI+h3pQx13sYc/mvcwa/iBet5f8zEIKs4sirveNOe/RdcCRdBt4+EpANXjk+wDpX4vMG2cuE6oeYRjQ0qeIZDlYEfE3gHOkUXziWx2SjvWE9q26vw0c56Ekzoo8f2ALMuccovPMldBYdiOhZzsF4RgC1j7IwuvB8zHhVEIFrP3JLp7DhCOvrdGDszmtdB/UjZ8//w2rTcPr9hEMBJF63Z4loYg6HxMdkmGX5nP5nbnUviqyFhAuiLsavJ9CYKuRE3BNM6QEys8svcjMnph+H2o7lPSPo67gSH6RaYPeYd0PG/ZvmoqgQ892nDiyL0Mmn4LD5SBrZw7jO14T8X1qdo1zrjydi2aONG2nlrM7j0cnP8PPn/2OlJJuA4/kuuevoEmbRoDBBLqy501k7czG564svLJYJYqicUSP9sx89waSM+rOA6+Kbxet5MHx83CX7J+OuhBw0ugB3PLqNfs1zsGABo+8PmE5AvMqR82oUBRWKo1pVSggrMii+0INlL1VogNqaLvT8OjspxiNFszg+YzYnO7y83qMl4TnbaT3Q7CdAq5bDC60nmeEWELdh0TiXWSvy0GzWWo05MGAzprPf8Pv8eOvxbK9KlSLQsfeR2CPs9G0bSOWPresnoy5YNvm7sCn9TBWVUiEtSvCNSHGLqVETdTqOcjAzigrOA9rPnqazb/so/Z41Snokr9XbWLb2h189Nwy5q2+n4wWaZw4qh9fv7WiIs6sKAJHnJ2RN55rasQD/gDX9ptBzj95FZzy379exzV9ZvDy5idxxNn56LllZO/MDRlxKF81CCSPf7SJtgMeRqj7Z8QB+p7Ti5ZHNmPbHztr1TIuGqSEsuJ/Q9b3v0NDh6B9gNEt5/oQn7scGoh4RNxEhP1MDMNcHUGkdzW4FxLpvQUNg5ryEiL9K5SkR6P2uCzXRKkTpBs8yxDBvxFpn7B1+3RmTjyRC47uypSz+rFi6S5adWkRdSlbcWZVQbUotYq7mh6vKPjcPn7/6k8+XvAFFq3+fImBI07nq48G4HUboQcpK//5vJC920IdCRaA1VBkjAWRDIqZ4RLGsXp2qIioOiRfvRPdSCk1aHSbwev2kbUjh09COtzXPXc5l9x1AY1apxOf4uLEUf14avX9pt7yzr93ced5D5G7Ky+sMEjXJZ5SD1+/tQKAHz5YbTpnzSbJy1SQZe/Ved5mUC0qj3x9F+PvGcURx7bFlRxXo265GexxNk4cGYXtdZigwSPfRyhxFyEtrY2YeDATbAMRcZMQqhH/k/EzoPjeULWgwPDGBHiXEp1m50FoXWs+uf00KHmCulRaGnCjuz/h/afzmX/9kgr1wIKsrcwa9iBturak37DefP/eqqiGuu/ZPfnxozV1PG8lVE1l82/bKrzwcp3w/Q6zCEhMT+CBcUW83qwDg0bkYXfofP9xIicPL+LlB9J5ceVfpjot0eFEJD8bvUdq+amFQMbfDoU3UpkXEca/4Hak97vKuHk1WDQvQrgikoWKqtSqPZ0ZvG4f3y/+iWHXDEFVVc6/bmhFMU/AH+DHpWtY/sZ3tOrSgt5ndEe1qPzwwU/MHjMXn8dv+j14Sr3s2mBUKyc3TkIIIuasByEh2VtZcVoPsNqtnDdtKOdNG0r2P7lMOf4WSovceEo82J22iuRuNNjjbHTo2Y4TRvaptzkdjGgw5PsBYRuAsA0w3abEjULaTwHvV4bQUOnjhoJe9NFCDYVrcV5La2T8dVD8EHVN7L1wZx7vPPlKmAQsgJSSLb9vZ+eG3VjtmqkhT0yLJ71lOoEodLOaoNk1/N6AqaHY3/CK1anx8fPL8JR62b7Bzgv3VnK6f18RjysxELXoJvqEe4DWrVa7Ko7B6Eo8lDwP/t8wKmGDENwKpc9Vhsyq4dQReSx7OyVCRKs6FbAuEAKSG0UKpuVnFnBt3xkU5BThLfNVdHN/+KtZPDh+Ht6y6OELh8tOu2NaAzBsypmsXPIT3rLKZ0RRdNKa+GnfTRg1FAcA6c1TeWnjE3y76Ee2r9tJ6y4t+XjBMtb9sAF/FXaVZrdw/JCeaDYL/c7tTb9ze9eqU9GhjIZk578AGcxFZp9AdG0Tq8FOSZqHCGwA/GAbZK4LXnXcwD/IspfAu9IYu1xuNQp8XsHZ7brFJK7EQnLjJMoKy/YrXnmgoKgKrY9qwZbftkfZQ/Liyr9o0jJy7sEgvPdcGosXpFNWotDjhGImzthD4xZ+UNIQiQ8hbH2jnlv6ViELZxpGO6qOuB3jpRv5Enz54Y68PS8ehEBRjJfaza9ey5NTFlCQVRi152M0GFTCO+jSt2PY53eNeIgfFq8OawZs0VS6n9KNP75bj7vYPKlo0VTSW6SxYN2jFQyWJc98yrPTF6BaAuhBSG/q557Xd9O4bY/QKubfidqWFpZy38VP8vNnv6JaVKx2jSlPTuLECw7PUEpDif5/CKmXIrN6Y+492yFunMFXLnko9JkOKOC6DMV1tfmYUoL3E6MbjJ4H1hOMUvmyF6KcB/5c5eS6c/dd3N5sOX0wwZUUh9/nj+pZ9hhYzMwXtmK1y7AQy0NTm/PNkuQKpUShSFwJQZ7/5m+S0gKAw1BwVCP1P6R/AzJ3BLXTorESaeStEDeRvbu6s2rxg9jthfQ5vYj4tCPIK7uLZ278jJUf/oyi+An4AvhNGmWoFgXNpqGoCkF/kMsevpihl58etk9pURnDU8ebhmuMY4XpfVNUhVMvPoFL77+QxLSEsG1lxW42rFiEy/ktbY4MojjPBfvgGkNRBwJFucUU55fQuE1GRIHQ4YTDwpBLvQT0XKPQJWoi8OCEnj8FvMsJ/yE7IP4GhP0MZPaJRCZA7YjUNxHakZHjlTxhLOMrDIgFRDzgj6BFSglet+DmC9qx/uf669z9b0NRRUylPZvTSpuurdj25048JR4sVguKItD1ysKm1p3cjL42k76Di7BoguxdFiYO7BghK6BZdUZcmcW4GzMBDeIuRYmPVGnWC24Az+JazF41tNiD5QJWEnCAmg7Jz0HusGqFWgooGYj0L0HPRGYPZuHjibz+WEY1UTELlz10CUce34GS/FI69mqHwxXORsndk8+VPW8kb0+B6cw0m4XUpins3ZYVlr6xx9m4fsGVnDAy+mrkYIW7xE1xXgmpTVMOq7DKIU0/lNKPLLrLKLMWKiCQcVejuCb+11OrNUTibGT+5eBfG+KO+8BxDsI5xlAhNJVQ9SE9SyMMudSLjAYIYYY/YNDgtN7g/57ywaSEvEyVmZe0YePvNRtxRRUkN0oid3cNQln/MjS7xhE92sTkWwcDOu2OaY1qUbFoKp37duTMSYP47as/eeKq5/H7Amz7y8Gj13fiw9db0rjpBtzFxaahJr9PYd3q8vvljy5L7P+tllcQDEkjlEsKKGAfiki4FVn2KsjqIRfd0LnxfhvqEKUw8uosvB6Fd+enIaVAUSVjpmdw1mWnxRSSWnDLaxRmmxdpKapCXFIc+XsLwrTNLJrRPHngiH1LEhblFbNr414at8nYbz55XeDz+nn8yuf48o3vUBQFzWbhsocuZvD4k/+1OfwXODQMefF94F5MGO+65HGkmoFwDI116EEDocQjUl8zqjmDu8HSobIqEBmVyGK6IfB3FL1yX6hbfeUxQoAzXpLSqHYMF1eSi37DevPBvPrmY+87NJuF8feMYtEjH0bfSRhNBT5e8AV6QEcogs2/beOUCwdy+iUn0bFXez5e8AXFeSX0PacX63/cyHuPbcHvjTcdTrXotGhfHjPWAB0Z3B3ZA1WYH28yIpUvXmn8834KYlaoX6ZJUlMGQc8EkQBCQVFg3I17GX1tJoW5FpLSQEvuV6Ma4MolP4fFxaujIDOcZSIQtO7SnKsei8GdjwJd13l62ossnb+sImk+4LzjuP6FK00rROsbcy97lq/f/qGivsFb5uXJKQtIbZJMr8E10EgPYRz0PHIpfVD2NpESo25kyVP/xZQqIPVCpOcTpOdLpKwiE6qXGIlIWWk8pfQjvd+Afz1YOlUYcQBsJ2HeZd6KsJ8R+bGSDjKaYY78UTvidE45v9LDVlTzr12zWjjhgj78/vW6KGPvPyxWC03bNaoTDf7+z2/nw6c/Iz8zOq1NEQZ9sby7jdQlJfmlXNHjBnZt2kPrLi244pFLuPHFq+k/7DhWLlkdkzOvWSXDJuWEcgJ+8CxFZp+MXnATsuoL1H5KDbNXMF4EZobUD4HNCGuvkGSw2US6QTUWiNUmSW/qR7OqCMewmGff9udO/L7ozCazmLmUku1//kNBdt1phIse+ZCPF3yJ3+untLAMv9fP9++t4vmbX6vzWHVFaWEpX735Az53+PV6y3y8fu/h3YHyoDfkRtVclKy9nv2vTiXs1GXvILP6IwtvQRZej8zqi+79Gr1gOjLreGTuEGRWH/Syd5H+dca+Bdcii25DZp+IXuUlJNR0SLgNQ9NDo6LrvHOcoT1OqAzctxrpXw9qK7B0IrLoSKO881AwCH/8GMev37nweQxOsyPejqIKpElVjBACVVP59P++Yvu6f+r/hmHEsCc/cCEvbXySwRNqv9S96/xHyM8sNDU6zkQnkx+6CKvDPGfi8/hZcOvrEZ+7kqKFmSTO+CCXzdpNICBY9UW5xx0EdPC8h8wehAwaQlrCOQZDJdEMFqMgyNLRfLMMgBJvSDooTQjvGmUHW1+E1hmhOBHJ8w3vX7iMf9ggYSbC0jbKueGdR5ZwVe+bY9IKo0KIOrNlABbN/TBCY9zr9rF0/rIKudsdf+3i/nFPcGnX67h39KNs+T0a06huyM8qQtXM4+GZO/47W/Fv4OAPrYhEUBJCccJqqCXHt74hA5uh6E6MUE+Vhzb/cgzj6gtFN9xQNAsprCCLwgcpfRZp7YkIcccV5wVIaz/wfgLSb+ijaAbDRC/7AIpnAiIUS9Uw9ETKf2gK4DJeBsV38tfPTu4Y19pI4AlDJ6vFEX7Sm6eyY725DvlR/Tuyfd0uinIPnOCVRbOg2a3cNnQOiWkJzHhjKj8sWc03b6+IKoUKhqcVLWHVY1BX+p97HP9328Kox//65R8Rnw2/dghbft9uwtMWlBWrPHajoXd935ubIrXY9Rxk8RxE0sMIJRFSXkQWTAG9GIMxFMCgG2L8v2M0FN9BpFeuGPRGYYXUt5Clz4J7qUFFdYxExF1UOStrL8hYAb6VxjNn7RNVFRMMCdgFt74eoV4JRK0TqIombRuR2qTu8q/FeeZyA36Pj4AvwLY/dzL9xJn4PH70oM729f+wYsnPzP7o1v0WtWrUKs20GlZRBJ37RHmZHiY46D1yIRSIn0HlDwOMdbkDEX/9fzIn6V6M+VI5SCS9zGMuriU9yLI3wj4SluZGdajrigojLv1/QdFtxspElmCwVIowjEV5LFwHaxcU57ns2juOW0a3pTBXo6xEpaxYxV2qsuFXe1Qj7kxwcNolJ8Xkhwt1/7uyJGUk8Oz0l/hx6Ro+f+VrHpr4FEf17cgbO54x76MZgt8bMC2MsTlt9DilK3u2ZGK1R4+/xidHet8DR/Th7CtPR7NrOBPMPWpFlXTrU2pSSKSDd1nFX8LaHZH+DcRNoHKV5DH++deB5z3MkyACPEYuQijxKPHXo2QsR0n/BMU1AVGtrF8IK8I2EGE/NaYRB/jy9W9NjThA/+HHxViRGM/DvgpMde5jTm9t3rEpVruVp6a+iKfUW7G6krqsiGPvLzSrxoR7R2NzVmnwIgw533F3joxx5KGPg96QAyiOIYjkZ0DrBUpjw1tNfStqo4YDDr2EupXHm/2IZWicGo4se4MamyQD+Fag54zm7xVv1rngRw/qOOMd6EFzr7jlkc2wO83ldOuCvduyKwyy8QP28dTUF7nxlLuIS3SSmJFQwwiV0GwaSRkJvPPIEmYNf5DSguiiSANN6HNCCCbMHsPtb17HyBvUFPY7AAAgAElEQVTOwWK2JJexePPhPx0hFPB+RmTS0m+IlJk223Yj3W8ZeaB6xroV0dk9FquFkTecHWbwwNA2GXD+cbyyZR7tu7eJcnRsXPbwOOwue0UeRoR00ac8OQmAv3/aZHrctj92xEzI1hbnXHUGt7x6DUcc25bkxkn0H96bJ36cQ4uOh3cP0IM/tBKCsPWNWV33b0LYByHdi6hdEUhIcyPCmDsQjjNrPlzPJmqOoDoCv1FWlFil407tcfzQnhx76tGs/uy3ME/OHmdj1M3DWDr/c/78/u86j1sVZuGTYCDItj93AkYM3ZUch6fUQ8AX/Uet2TRGTB/KhjVb+GXZ2pgGQLUoDDzPkJwtzClC1yXJGYlsXLOFGWfNwVPqRQhMZQeEItm52Ubrjl4Tr9yCDGwLr77Vo4WlYoic+dYgs0+G1DdNC472FQq5UbZIWnRM5vizerJo7tKKeLYQgiGTT+HqJybuV0/M9se04emfH+DN+97j75820+qoFoy66VzaHd0aAFeSk4Ksoojj7HH2qEn4uqK8LP9/CYeER37QwdoXbAOrMA2MUA/W/tUUERWj2jJuKkZoKHS7hRO0zmCP7N9ZHcJ2EtGTadUR4Jh+5rzoWLjj7elYbRo3vTyFzn06YHNYiUt0YrVrnH3VYE65cCAXz7og5hj7okpXHd4yI456/FnHxmS1aDYLY28/nzXLfq/Ri7NYLQQCAa7qfTOjm1/G2FaXM7nbdK4/eRb5ewtwF7tN25GVI2uXxVyjRRYi88YgpRFrlsHM6MwT4eKvNU7umtiKy0/pwFO3NSVrV3nYxG/E3AtuiHkddUW3vkVYtMh7o1okx/T1Mv2kWRTlVBpUKSVfvv4dZcWR98Ln9fPmA+8z4chruaTjNbx27zsxxaqaH9GE6QuuZP7vDzPj9akVRhxg+NQh2JzhqxOb08rQK2Jz4RsQG4dUZefBBCl1QxDLsxSEHeE4D2HtgfR8iix+GoLbMKRpLQa90DEcPF+ALADbyWDpglCTEEpKzPPoeiFkn4nRbiz6d1XZuRLm3daUzxam4CmLUdEmDA2N6+ZfzqkXnxi2ademPeT8k0ebri1Z/emvvHLXO+zevDemGl/zDk3YvSWzgv63rxBKqNtMjMeyfY82JKS4WLNsbY3jWayWqLHi2JBMuW8XZ4wtRFWjHC/iEIkPgbU7MmcI6AWE506Mb+S7j1J4YEpTfB6BlAKLRcfm1Hnqs400rtB+id3Wr2JW0g/SW+N+xTtnMqn3bxRkWypWaJotyDH9PAy66Cwem7IiomGDzWnjikfGMWTyqVXOJ7lh0J389ePGihyK1a7RtlsrHvvhXpS6yUkSDAZ5aur/8fHzXxpJV6+fky7ox7T5l9WrpPHhisOiRP9QgZ5/aUjIqtxrUUBJRqR9ivT+CEW3G/rgBMF6XIj9EKlWJ6UPmTsKApuI5NFXhUZJaQucji2G6JKEH5fF88CUlpQWRf44VE3l+KHHkt4sleULv6esyE2Xvh24cu542nRtVbHf+09+xPM3vx5BJzOFWfToAKC87H5f9dDrAlUTtOmsMmTsDk4flY0acSvtRmVmMBtKn8Usl6HrFkZ370BBdnjiUlEkJ5xTwM3zdoQ+0RAZK9BlHIXZRbiSXVhtlcdIvQxZfBe4PwSCoLZCJN5tsFlMIP1/kPPnRbwwO4WVnydgtUvOGJPLqGtLWbzwVv7vtndMVzNjZpzH+LtHVfz9+zfrmDFkdkSy2eGyM2PhNI47s0f1IWqForxi9mzOpFHrdJLS/73Kz0Mdh3SJ/qEE6d8A3h8JT3rpoJchS+ZV6+UJ+FYi869ApL5BBDyfQGALsY04gOTpmUdwxe3b0GwSm13SfUAJPQYW8+2HSVSPUyiKIGdnHj999EuFQfx1+Z9c2/825n53D3+v2kT2zlzefviD2hlxYwpRIdSQ1vh+GnohBK2PasGmNVv3b6BaIuiXbPotwDMbW/DdR4nc+9qmyDCLdgy47yFaQjpnj8BdHLky0nXBr9+Xe9UCLJ34aMGPPH/za/jcPoQiGHrF6UyaMxbVoiILrgbfqsrzBLcg8yZB2numXHKhHUXqEVO44fFHgdwK/qRIfpZOx8Wh2SwRhtzhstP5+HDWyfqVG00Lp9wlHtat2LDPhjwhJZ6ElNpWxTagJtSLIRdCDAYew+BePS+lvK8+xj0YIGXAKKFWkky95ggE/jL0YCKMlruyOW8Y/OD/ExnYirCEMwWkdzm16z8ZJGfnViYO6MSZF+bSvqubTWsd/PKti4hgcyixZ8Ye8Lp9XN3rZlRNNWKg9dOBDUF4c959hWaz/GtGvCpS0ss4fVQ2Ab9As5Zfhw1sJyK0TkhLK/CvxiwpHZcQjNqVKDHFUFZECL77rAdPT3sxrHhnydOfIYTg0tknhFoDVn92fMjS/0Mk3k3AH2DVR7+QtSOHjr3b06l3e5S4CUj72eD7HoTdaH4iHHQbKOnQsx1/r9oUFi5peWQzeg4+JuwMac1SsNo13CXhRt8eZyO9eWrtb2IDDij225ALIVRgHnAq8A/wkxDiAynlgavz/pegly2G4rsxBKkCSNtAROIDseOTaivMLaA19LnJr1poRpehaoYcJQPj3VgzLUsIKwU5Kq/PbRyxzZngwO/xEwgEDUpdlCYOekBHRw8T6d9vSPMy8H3BvxFOqY70Zj6e/GQDjjg9PLSiNIPEh5HSDc6Lwb2E8JWTEWuKi9fpc3ohKz5LDFNYtDstjJzaHNgO0sKrs3/EWxZOB/SWefngqU+55PZWWITVRFsnCIFN7NmaybQBt1NW7CboD6KoCp37dOSeD29Gs6aB45ywo4QQzPnkNt6du5RPXvgSqUtOvXgg508/O0ICtv/w3jw19f/wlHrCqJiqReWkUQcHi6wB9cNa6Q1sklJukQYhdiFwTg3HHPSQvlWhWHZRSF7UB95vkAXTYh+odQsZ82oFKkID22mY8omlDzSTyjP7WZj3/qwG4WTPP42ibi4rcle0UvsvciKHMkZelYXdqUfGx/UtkHUcMrMH5E8yjLmSgcFOslL1e77ukX84pn8xVpuOMz6I1a5y3nVDOPns8hBcKdm7zL9nPahTWtrUxIgDaGDtzuwxj4UYOB58Hj+eUi9/fv8X7zy8JOp1WW0ao246lxf/fpyXNj7BhbePMK0VsDlsPPLNXbTq3AKrXcPqsNK8Y1MeWj6LuMRDVxL5cEN9hFaaATur/P0PcFz1nYQQk4HJAC1btqyH0x5YyJL5RMamfUZMO5iJUM0NpxACUl5CFt4O3i8BHSwdEYmzQW2M9HwYKtcv93od4LwIoVSWQ4fJ9lbAiuHlVf9BWyB5ASV5j8e8nv/Cm60JqkWleYcmB0zbpa6wx9mMYsuSynvc7fgSLFGLRkMFXXomlL0MiXMR1o4gXMj8SRUSt444nXte2Ub2bo3cvQ5a9vmAOMdao7Vl6L3a/ig3v34fGTN2xNtJzGgLxUON8v2qPUGFncLS4Wz+5faI1n1et4+PF3zJ6FuG7/P9KEerI5vz3NpHyNqZg9QlGS3TGqiCBxnqwyM3ZdlGfCDlfCllTyllz/T06OXYBw2i6U8LrUaxLqEkoSQ/gWj0CyJjNUra+yHxoxRE2mJwjAClKVg6IxLvQcRPDzteFt9fKdtbERcV4LoSMtZDwhywnwPxNyEa/Yxi7bHfPO42XVualqpb7RrxKeahJFVTUS37/ghJdOJTXAeNUZh0/0VhT65F08n8xxo1xh0OD5Q+gVCbIZRERNzkajUFkN5U0KnP8biSm4ZYS5UnmzBjDzaHHvaZzWlj0n1jURQFkXAPuKaA0sioTbCdjEhdhC5TMSe6mxc57Q8yWqTRqFX6QfN9NaAS9WHI/wFaVPm7ORDFCh5CsB6H6YJFBkGNrjhXFUJYEUr48lOojVAS70TJ+Mow8I6hYT8MQ7b3LSJXA15wL0ZRVBTneShJD6LETUSEjEWvakmqumDqM5Np1aWFKTtB13WK88ylBNoc1ZK2oYa8+wI9IPnju78MPfaDAG8/tDiMZpeQHCSjuVlVZxQEKxemwn4quK41jLmIA6xg649IvN/Ywdo3TIq44zFuHly0ie4Dy0hItdO+extuff1azpgwyBhPqCiuS1EyvkVp9AtK8tMIS2tSmyTTpG0G1aHZLJw0KrJvpZQe9OIH0bP6oGf2RC+40aBPNuCQxn7zyIXRoG8DMAjYBfwEjJFS/hntmEOBRy6De5A5Q0MyuuWejQNcV6O4Lj1w59XzkVkDMKWziXiURj+bHrdnSyZX9LyR0sKyOrNNNJuFgC8YET+vqThHtahYrJbaUxQPYqiaSkJKPPmZ4e3QThqWx/RHd1aEV2IadZGCSP/UUEQMQUo3BLYZKodq+EpUL3keSh7H+K51ozLU2heR9GRE8+Lv31/FWw99QEFWIb0GH8PoW4ZXqBNu+mUr00+aSdAfxOv2YXfZadQyjce+vycijq3nXgz+X/hxmZXn7mrKrq02UhrpXDhzEmdOOqPB2z7IcUALgoQQZwJzMTJzL0gp7421/6FgyAFkcBey5EnwrgA1DRF3KcJ+esi4lRoVnfXcaFZKHZk9wDx8Y+2PkvJClOO8FO16m42rlrLqsyI+f8tJSYERsz9QCU5FVeqNkfJfw+qwctbkU3j/yU8irskZH6THCYWccl4BfU4v11NRiGQgqWBph0hdUmuDKP2/I8veBelG2E83KI3VjPgbc97l9dnvVqwWVE0lPimO+WsfqWijVpRbzLLXvmHvliy69O1I33N7RXTkkf61yLwLWb3cwl0TWuP1VJ7H5lSZdN84zr3apJFJAw4aNFR21hOk93tk0UwI7gIs4BiGSJiBEPuvDlgO3b0UCm8hLLGFHZH6hqniowzmIHPPN8r/ZRngNHjDKW/y3eLd/N/tC9m1cU9U2uH/MhSLgsWicvOr13L0iZ2ZcORUCrNNRJ2cQS6/czdnjM0LHdgU9D1ELFeEE5H0LMIWke/fJ5QWlTGyyaX4qkkMa1YLw6cNYdKcC2s9lix7C1l0L1ed3pxNayN1YeJTXLyTtaDOZfcN+PcQzZAf9t+YlBLpWY6eNxk990L00jf2WTZU+tch86+A4A6McIsX3O8hC26sv/nqxQhLS0i8PyTb26RG2V5ZfB/oWVR2YS8zjHrx7Qw8vw9zv717n5oE1ATVotaLTnlVKPuRPN0XyKCk1xnd6X7yUSSkxPP82ocN9kr4Xlg0o6QeMOLeajtMY05Sh+Dmus9DSuOFLMNFq7b9sdNUg8TvC7Dm85q1ZsKgtgShsGuLudPhLnbjNhHNasDBj8O+RF8W3x8qiw89oP61SM/7kPJqhHB/jWOVPEsk/c8L3i+RweyIGGidxpYSWfyQQWMTWqhL0MmIlBdievtSusHzEZH66Dr4VuFzlzJt4B3k7Mrb57nFmHXN8fhaarAIAa26tOT4s3qw8sM17Fi/Ez0Y+8Bybvz+QErJ9++t4vv3VpGUkcCYW8/jyR/ncO/oufyzcQ8CncYtyrjl6T04XcbKCNspIRkG00mBxby5QtQ5eL9CFt4BuvEdSfvpiIS7EYqTlMZJBPyRSWghIKNlWt0u1toblMY0buVj67pIhpI9zo4jvrZKmw04mHBYe+QyuAvKXiNcN9xtdKGv0uGl1ghuwdQqCWt0umItIcvehLJXMdrHlRj/9X6CzOyOntndlF0gpUTmTSR6kwvB8jdXsGdL5n7NLRqCAT2mIbVYLVxwwzn0PacXFmtsn0FK6HBsWybOHsu8VXOIi9HBBgFH9GzLRbNG1GtyriCriBdmvM6KJauZ/9vDvLzxCV7cMI/n179Iu+OnIlxTQ5o4CkizF6MCamukpXutV33S/ycy/xrQ92IkPX3g+QxZOBUwWq517NkuovGF1WHl/OlD63R9QiiI1NcYf3tGiOpYCZvTxtjbz2sIqxyiOLy/Nd8qQ/ekOmQZ0vNV3cfTjsa00lL6oGqDgX1B2fNENqqQGPIApeB5H5kzFKlXid/6fwd/NHKQArYTWPXRb/so47r/0KwWBpzfh9vfuo6TR/dHs2s4XPao+3/5+re8Mec9vn5rBXM+mhG1/ZvVpjHj9akxuwLVHZI2ndyMv3kzetHjBL3bSWuWSnrzVIP/7xyLcF0Gls7g+ZioL0+1BWQdjczshp470hBRi3XW0ucwX+WtQAb3ADDrvRvodkIXNJtx/+KSnEx9ZjJH9etU56sUSgp9LniBm16ZRpO2xv1NbpTI5Acu5LypZ9V5vAYcHDi8QysiUvnPgAXUugv+iLjJhv64LKPSM3eA84Iwytk+Qc+veR9ZgCx7G+GaaPwdWE/UuIVwIBLuoShv3n5Na39YL5rNwg+LV/H71+sYMX0ogy4cQN7eAu6/6AnT/QP+IC/esRCrw4pmtfDwV3fy2YvLWTzv0womiaqpXDxzBAAfPbes3hg5mlUy5f5/6NKrDL8PyD8L3TUNfN+Cfw2IRIgbD46Lia59o4eqeUNVtP5fkXmjIe0zhJqK1MuM5skIsPVBCLtBTTRd5WnIsoUgXMS7enLfp7eRn1lAUW4JzTs02W/t7gHD+zNgeH+klP8a5VD6ViPdHwA6wn6WIeHcQHesFxzWrBUpfcisgSbLYDsibXGE2mCtxvRvMOLuFT/uCQjnhRGUsbpCzz4Hgutr3tF6EkrKs8ZcvD8gC64Kcd2rQoO4aSjxk7i023Vs+2Nn5DgHEKqqoCNRFYWAP4hQjBygzWHF7wvUirIoBLTq3ILn1j7Cjr928d27PyKEoP/w3ix79RveeXhJvckOCEXS9bgSHly0pYY9HeAcAYHt4PvabCQijbIKcVOMuHnR9VSu6CQi6TGk52twv4G5h+/AeCloYDsekTSv3umu/xb0ovvB/TrIciaWHRzDURJn/qfzOtTwP6lHLoTV0D3JvzSkb6IAEhJm75MRBxBaB0TK/nf8rgoZ2Fx7pkPVeVuPByUVgtUMubAh4s4HjARW1KE0C4pFIeAP1NjZR7UoJKTG40xwsnvzXtPYuEVTOX38ybhLPEYX91Az5/LWc1537dlCUsLuzXvJ2plDy07NGHOroRny5w9/s+jRpfWqHdOklYd7Xq2NPK4byt6EhAeiGHIzpygInqWhqs/wal2ZfzWkvgWe90Mv4+rfQXmoLQDelciyRYi42C33DkbIwKZQrqrq9bvBvQjpPB+hdfmvpnbY4LA25ABC6wjpX0HgD8Mb0I6uV853fUC636V2DZZVhHNMlb91Iz4fMaBCufri0MtP469VG01tzDGDjmLas5fx4TOf8eYDi2N6ysGATs/Bx/D9e6uiJjgD/iBb/9jBhtV1p9+ZQggKc4pY8cFq/vzhbwqyC8nZlVfvlaR5mVZsjlquTIUGvh+orbwwAMHt0QZD+H+F1HeRxY8YYRfhNES4Ijx0N7jfgkPQkOP9GvN75UN6vmww5PWAw96Qg5GtR+v2X08jOvSqaojRoEHSUwbHvBzer0GadW4PGF6gcySDRqXxybOlrF1ZtVG0xGYXTH7gIjJapDHh3jHkZxayfOH3UY2kZtPY+deusMYHZli34u8ITet9RUKKi6n9b8fv9R/QYiavW8HnFVhttTiHdINIqOMZgpi/qH2GyqZ82OB4Jz+DEE5k3gVhOixVTh7+V3BPSMe+fY09PP9TCDvGi6/6KsqCUKI0rG5AnXB4s1YOEKQMIgObkcGsehlP2E4GzB5ozYivJj0FGWtR7CeEbw5uN/fIKUMGjFCBcL/EQ+9u4cbHd9C6k4fURj5OGp7P08u20LpTpbGYNv8yJtw7msatM0zzw4qqUFbkrrFrvaqqEVS5usIeZyMu0UlhThE+t+8AV6RKju5bXM2Ix+JSC0TccCL05mPB0gEwWwUGQf8HZCEE1kLeBUj/3yDMWqAZMWUAqZeg501EZp+GzJ+AzOqDXvLEwas1bxuMedhJgP3Mf3s2hyUaDHkdIT3LkFl9kbnnIbNPRs8diwzm7N+YSlMiPTYbxE1CiZ+CYj/FnN9r6WQs9atDOCuXq8GdgM6g8wt49ssNvP7Lem5+cifN2vqRvt8rDxGCk85PZdiVibQ6MgHNZkGzWQw97PQE7lp8E627tIg8V/VTK/vREUhA22NaceXc8Vz+yCWo+/lCiA7DqCiqxO7UmXLfrirbVIi/iegNPQKG+qXragzjHGtRKwAHxM80ag1qg6LbEEmPhxQTQ/kN4QTtGIRzpDH7wlvAF2pKUV5zUPq8sQo7CCHUVEh8BLAb1yXiABskzkaoTf7r6R0W+J8IrdQXpP8vZMF1hCVt/L8g8ycaOuPl++l5RrhEbR6TZSD9a42ltXcZkTFEiXDWoKNh7QNqGwhspFIt0WIkQO2nVe7j/4NINUUPFN2IXnQjKO0IBDzYvHs49Ww443zJwsczeOfZlpx28YlcMfcSVFXFleTkm0UrY1ZqBnzBfdYob3d0a+Z+dw92p40vXvs2Ql+kfiDp2qcETZN06lHG2eNzSU4vX5mooHVFiRuD7n4zRO+sBktHhBAI12SkfTB4P0eWvQ/BbVTywQVgMaQV4qeA7zekrG1y1oNU2yHSl4NnKTKYg7D2NFQRhTDqCLzLifg+pRtZ+hzCcXBywRXHqUjbD+D9BpBgG4BQ6hqiakA0NBjyOkCWvUykQQxAcBvSvx7UZsiC6yuTYcKGTJiJ4hgSMZbu/hwKp2P8+M0to3S/h3BNjjofoxvRK8iSuRDi52I/HRE/3WDsACLuIqR7IeiFRI3D65tRJNirRHdGXpXFlnUOPnnhSybMHoMz3kGHY9sxaOwAvnj126hzAiMxWle0PboV81bdh2oxPOEOPdvWWKJfF8QnB2jVwUNulsb4m/bSpXf1YiIF1ObgmoqeM8yo/o2ACq4ZFX8JS0uwTATnOIPz7X7DCHXZz0LETayIW+vFjxJZ7BULwmj07RwbGeXSi4i6WtAPhAxD/UEoLnA0hFIOBBoMeV0Q3IV50koFPQtZPAd8P1OR1JFuKLwVqTZDWCsbP0ipQ/FMIptHVIUPahGDF4oLkXAbJNwWZXsKpL6PLJlnsB6isGOUarbBEScZNimH31c2Zvu6f+jUuz0ENzPu9qP57as/yNmVX2fd8+jXIHiyihE35qNgsVqiVqXanFZ6De5O5vZsGrdOp+/ZvejUU2PDtzfSrnMRq7+K4/m7mxLwCy69fQ9nj8/B5zMSmpo1Srw2aQHkDYuSQAawIERkjkAICyLuQoiLsoJSMjCXvTXbtzGKahYjD0FtYoh2yeovBsVYfTXgfxINMfK6wNoX06SV9CFFMvh+ITIz70GWVuOd63tBN++6UwHhrDcpVKMr0V1QR9plQkqAgC9AclopMudMNn8zmst7PkZRdi5I9ru9XDl6ndEdrVql4vofN5iKRZXDW+bjx6VrsNo0pj5zGYNGNaJpypWccHYOLdp7OGdCLu9tWM8V9+QxZFwuVrvElaBjtckozSEU8C41xMqinxUZ1ke1dhDO0Zg23Y7wt22Q/H+xxxIqJMzCiJ+XH28B4UK4rqnz3BpweKDBkNcBwjkalCTCGQsOcF6IIGCeeERCsFpzYRFPbO/MblQC2k7a7zmHwVJ7vq7PI1i5LInOxzchI+5iCG7msRvSKStW8HmNx2a/2SQCHC47Vz82IezjdSv+Zu5l82v0+P1eP3//tIm7L3jEqLaVZYjQfVUUsNoCnDthLw5nTZ6wAMuRENxL7FUS4P/VaJOWNRC9+IlaiWMJrQMkzgkl+lwhGdxWkLoUEh8C+wUQPxPRaBWK1q7G8RTHYETKy4YKo6WTEYJJ+xBhaV7jsQ04PNEQWqkDhJIAaYsrE5RKIsJ5CdjPMtgDpt6cCtYe1caJR9pOCBVKVDUEApTG4ByHiBtT/+XYrmmQPzbqZl03DKDXLSjI1dj6Vwduf/ozwIvPK9jwmxNz7Zo6QhgVp2dc0przpx5Heutwb/Wthz6odaIz4A+ybe2fSO+6KJ52Tfx8JwgrIukB8P+G9CyuoutughALCIDS+Uj/GkRKbC8aQHEMQdpPBf9aw6CHkqZo7cFxdo3HV4ewHoOw7p+OTgMOHxzWWiv/NvSSJ6H0OZP4pRUS7w9Lekq9BFkwBXyrDWqa9EHceIRr2gEVEtKzh0LQLJEH4EBaulBY1AOcQ0hiJOVMjGAAzm7XlYC/5kWcUKB997Zs+mWrqdee1lTw0k9+LGIzCIvxAgxdO+g8dNFl7N26i/VrnPi9sc/X86Qi7liwLUbIJNokk8AxFmFpAfbBCMWJlF5kzhkhz7y2ipGaIZrmGGV43lUgpQ/cHyK9y0FJRzgj92lAA+qC/9lWb1JK0HMMNcADXP0mpTTYC8WziIwL2BDpyxBqo/BjAv8YMXPLEfuvoFgL6IGNkBPJogHAciRKiEYpPcuRhdNDPGUD913Vkm+XJhLwxTaudpedRVkL8Hn8fPfejzw97cWKbVKXvPRTCYmJfxNmLIUD4i6HslfwuYvwh5KcD17TkhWfmt8XuzPI23/8gTW6nIwJBGBDJD2GsEeGrqSehyyeC55PjUKdWkknKIAVnGNQEm42xpEeZO4FBi1RujGYJhok3oviqJuOeAMaUI7/yVZv0vsjMmcQMvskZNZx6PmTkbWRi91HCCEQ+DBPbAGeTyKPsTRHWHv+K0YcQLEcEWI3VKewORBxl1TZMZHqL6Mpc/6hXWc3dmcQVdUjtoOhQT7+7guw2q24kuIYPP5k3tk1hed/cLJgheCdnYNJTNxIhMcr3VDyGOg5WG0+4uJ14uJ1bn5qO42a+6qtUozz9h5UhFZX2RyRiEhdaGrEwWD5KIl3ITK+Nb0+c+iAB8reQPrWGDMsexMCW6uszoLGPkV3IGX9asU0oAGHbYxcBrYj8ycTxt/1fo/Mm4RIW3QAT+zBfFkeqCLh+d9CJD2KzLsUApuMxhvSB86RYD+3ciftGEOmt4pEblyCzmNLN7Hxdwdb10m8qk0AABd1SURBVNtZ/l4ya3+MQ+qCYBAymvq58rHx9BteyRXWS+ajljxJakqIL+/+hehhi0jDqaow+jrIzD6Xd+cuxev2kdHcR2JKkN6DCut+8VqXqL1Pw2ZS9r7pfGLDg3QvQVh7hF7aZt+3MBqCWHvVcewGNCA6Dl9DXvYykVRAPwQ2If3rEdqRB+bEtpOgZB6RlZpa/bNQ9hFCSUGkLTJ0PfRMsHRGqOH9H4VQIOUFZO4EkHspDzEIodLhaC8djnZz+qh8CnJVCrI1mrb2YrU7IamyybMMZkPJ44QndKO9zBSMsEf4fdOskjPGd0ckDOO0EZvRy5Zg0dykNfZh0WIZWg3jhRGuoSKc0ZO9FfOWHiiZXeN+MSGihPGkHipRr/pREbL4UfB8CEiwDzGKuhoqHxtQSxy2hpzAVkw9P6EahT0HyJALrQPSORrcCys9cGEHk2TYfw2hdQQ6Rt9uaQsZy5G+X4xqVT3bqH4M7gL324CfpNQgSanlxrcUCi5Bt56ISH4cWfwwkZWw5VAxjKwOWA3jJkuJfAE6wdYXmTuapo23UCM9sHxs101G+7zy4h7pB+cYsA2q+fDABvYt6mivKJEXzjFI/6pqiW8BappBdQxByqDRRSiwjQrHw/0O0rcK0pYcso0kGvDv4vB9Sqy9wPcTEf0QpR9qsbTeF0gpjdZgeg5ox2LonjRGOM829DIOQQghELYeYKukUMpgJtLzIUgzeVYJvuXInOExdbhRmoSSiQrYTkMkTEcWPQ6eRVR+Zw5Dflj3hAxdbYy4BnFXorguRsaNNfq26vlg7YFQG9fyopNiFAbFAWUYBTk+KnXJNXCOQliPNXaznQjOcVD6QmV9gXAhkueHx/u934Qad1c9nx+CO5BZ/Yz1hH2QwWZSw3uYSinB87Gx+pQlYDsdEXcJQolRGdqAwxL7ZciFEA8CQzGe6M3AeCllQX1MbH8hnKORZa+AHqDSy3OA4wyE2vSAnFMWzQD3Uiri8sIB9mEHhRGX/nWhlUhnhNpsv8YSaiOjGULRA+D7zHyn4MZYswF9N8ZLQIBnCVJtBt6PQttVQIG4iQjXFciiOzCMZ8RMCA+dqCBSwHkhUvoMvRlb3cvWhaUl0tIBAusIXyE4EMmPIWwDjasI7jVi4dILtpPCVlxCCET8dUjn2FBbwCSw9jYqM6si8JcJXRXADzKUmHe/h/R+A2mfIBQXUuoIoSCL74OyhVQ8b4HtSM8SSH2/Qef7fwz7RT8UQpwGfCmlDAgh7geQUt5U03H/Ws/OYCay5HGjIa5wgfOieumvaXou/1pk7oVEiiPZEalvh8IY/z6kno/MmxhqJacanqb9DETinEijUkfo/q2QG01ruh4g4hHp3xqd5kvnE5nzMINChZestkIkzELY+hj6NnqO4RVHMXIyuBdZ8ih4vgZsIHRDbExoRkLYdS2Ka1L9XR8g3R/+f3vnHiZXXd7xz/fMfXezSy4b1IhixIpi4UHDXUBLuAgUxFosSOVSCD5KRAuUCFr18dIIBbyCF2qlmFosTeSpFxCpbSQIEgRaUEFEDZdIQq672d2ZnTlv//idTXZ3zmxmM7M7OzO/z/PkYXfmnN95z7Dznt/v/b3v+8W2f5Ry3dXx5CD3dhfiKv3BVQfHysPlYNaVBJ1nxw3iaXKmRLPTzEZPx+4H3lnLePVGib1Rz6en52L51ZSFcQCnt7gaGuXIty2LOvmNcoJDd2GpA1DnuXs+rhn0Xc+UOXHAqdLfjTreie34BtU58pCdzq30O2zLxVjX37p4ebgNMCx7Eur5JNIuAQkLt2Gb3uHCMCOzcMtC+nDU+Tcu22Uq6hCyx0Pf8mhWPlHO+iAM3rbrmIqNvQahsBq8I28r6jk1vQD4YaU3JS2RtFbS2o0bN9bxsjMEdRKvGpOEBi1zLeyH/L2UO8BBGLi1tsGHH3YOY7Jo9u6PGcGGIdyCEgvQ7C+5c9UJ5CB4GdW1C8hD/3IIN7ifKbgH2dbLxl5q4DYI+xgbShmCws8g8dIpKyaTMmjubZA+jJ0hpdivpahW19V9Np52YreOXNKPJT0W8+/0UcdcjUsRWVFpHDP7mpktMrNFvb29lQ5rXrInU9GxZN82rabsxIaoaNNul/K7GTq/huo2H0eTjTpIVrsQDCB9KADKHI3m34fmrEDzVsLsah9EI5kxo8lDfjVWemHXS4W1xK6olIoXmKgjSiwgmHML2vsRmP8wJF9N+WdU7conhfxsvO3Y7TfKzBZP9L6kc4FTgeNsxooGTj1KzMd6roNtl7sURwBC1HOD6wneCIK5kNg7avQ0moTLqqgBBd0YaeLDSZUoQP5OqptZApnDxxTvSIldGUfFZ/bg+qNQ2vVUGWmZkFwIhTWUr15KLuVyGpAySGBzbsW2XhnZI9cpMehwhUTlZ+HSN5NAEvV8BiX3mxZ7PTOHWrNWTgKuBI41m6hlXHNjYT82uAqGH4LEQtRxZmwqm5Oz+plbjiPIHDEmDjvdSIKe5djmC3EOqghkIOhCXZfWNnj2FOi7bpInTUY5KAGzPlXxXSttpKb4vA075x2hjndjg98el3aYgOAlWOJ19ej5WDUK5qA5X8fCHcAwCvbCCo9gm9/D2FVQDrouQtnTXPph8k983nmbUmvWylM4pYVN0Uv3m9l7d3deM3U/tNKL0SbYVtyXyM1+NPsWlD5o+u0Jt+0szJGq6xZlxXUu17j4e0gfgjre5aTEarUl/z/Y1g+NeqGEc65xIZeRKF6cMx+vnpOE9CEEc26Jv+7wE9imMynPEEpAsDeE65nYyeeg8zyCWR8a86oV1jph452tahNAGhLz0Zx/abhQsOUfwPo+4zRagznQeXGUhTWdjxlPI2nb7ofVYsV12I6vwvCjbtbddTFKHUC47SMwuJKyKtHEQoLe8iZYU2afFbBtH4WhH0TL6BA63486L2roF9msEBVeCUsdDC+eGG0sjnPY6cUwfF98r+/Eq1xRjNJRwdbr0OyvoCB+YzTccink7yq/BinoXQMbj6Fi/D5YCF1LUO6M2M8tHFgF28fL8AWQPIBgKnv0eDxVMCXph62CDT+JbX5XtDlYguJvsPx/w+wbIX8PsaX+pWewcPO0xb9t+ydh6IdA3hWggOvpknjJHgkT1AtXdHOU+xmwOSuwrZdA8WkgcGGcnusgfQi28ehyR64c6r7KNeka/jUkel1rgApY6QXI30fszF4ZFD6PZY6IRDvGHZN8A8G8lRPf0MC3KH8IhFB8Eiutb/is3OOJwztywPquiRzMyOrEhQds+8dwpdiVqNCuts6Y5WHwu5Rv7A1i/V9BDXTk41FyHzTvDqz0nHswJl61qwBr9texzefhHoyhayCVOxvSx7jZ8W40Sm34N+6BS4WMGytAYgF0XgSFB6J49zCQAqVQzyd3fwNWQUtViZozfTyeqcI7cnCbmHEx1dJ6J3aw42bGztKSrlBkioUqdhL2x9sHrlpxBhLXBkCpA2D+GlcgFW6HzGGTahdg2z9R2dGShezprlHX4Ercn7a5vPPcGS4EVc1sOnui648yvtmXsi4ENINwQiYrYMdXIdzs5OO6r5oRLSE800tLC0tUjSpt/CWg80LIvBnIRuK5HZDYF/VcA4CVnifceiXhhiMJN55EuOM71H3fIZgNsS1NBemD63utKUZKo+xi1PGOyfd8GX6o8nu5v3JNuAZvxznhAVwP+DwUf1t1SESdF0YpiSPZRkkgh3qWQ/Fxwk3nEL7wRsKNJxIO3DE5++uM7fgy9F3rWhEzDMXHsM0XYLFpip5Wxs/IATovgL5/ZGwWRAZyZxAEHTD7Rqz4FAz/EhIvg9SbkOQyWl58O9h2XDz2Rej/NFb6Deq+um7mSQE26yOwbRm7VgYBKIu6Lpvo1NZC2QrhjbRrG0wkXjGGIhTWYuGWipunYy4RdMPc/8QGvwuFe112UMdZYIPYprPY+TdS6oftf09omwg6L6jtvvYAs7zThy3L3BnC+r6A5tw87TZ5God35IA6znEx3YEVUYOkYdc6dJQzVnI/GFdoYQO3RLH1UZtqNugkvzrfixJz62ZjkDsZC+ZiO26C0jpIHYy63oeSr67bNWYqNvQTrO+zlZ04JSr3PQfXLGwAqK49gIIOVx05qkIy3LyE8k3QQej/ItZxjtv0HW1zuBVIT10XwtILYBWylYq/nppremYs3pETtRztXoZ1vc+J5QYvK1PMiaXwc2IdiNKuUVXiyPramTkM7WZDsNWw/L3Y1kspd6KRWGdyv0jgeIKNyKCn9v4jxceJ36cIo7x+FyaywqOuUVlpnfs9c7TrNFnFamBSJHqpWGA1QdaPpzVp2xi5WZFwx62EL/65i2333wgkUerA6pw4QHJfYj9CK7oQjKdmbPu1VNS+nLsKdS1l4uZZLr5dc659Yp8KBoauOAew0npsy7lRy+AoYya/Gtt8Xt33TaQcdLybXbH8EbLRZ+JpJ9rXkW/9gNsoKj4Bpaeh/yZs89mYVRIGLkcd51OegpiC1IEouW89zW1fSk9WeKPgHrjpw6lYLZr+MzRvFYry3GvBOcfxqahZ6DhzZxsGG/i2e4iPoej6h0/BBqRmXQFdF7ne5FFPFs3+AvLCzm1HWzpyG34cyrr35d0SPX9P1eMotT+a/UVXFk4GSEPmLWj2TfU1uE2xsJ/K/VnMCU8EHajnBpyTzeKihVnIvQvNvmnC4qLJoMxR0PMPEPTi8tLdjFizPrzroOJviQ21mZw6U52RAoKuS9D8tWjvxwh670Y1NkPzNCftGSMvPEysg7ABLP8gyp5Y9VDKHAu9q10KmLqmL7e8HbAB3J9ojKCEcrsUjhLzIHUADD8G6obO8wm6Lq67OUHuFCx7shN1UA5pXP/51Jsg/1PKQ0HFKRP7hqg5WmwvfE+70J6OPDHf9Sux8ZWSGdiDEmxJrlS+ibDSczB0j6tYzCx2OpzjjzFzupWlDS5cVMcsnKoIeiGYFzXBGo0gc4KzcfiXYyX2LA/9NxIqR9D5nopDm5WgcL97AKcOqjr7R5J7WMS91/FObOBmCIfZJVCRhcyxKDmziok8rUV7OvLMW6Kc5NFl+YASKPf2Rlk1bYQ7vgF9N0S/CViOdX+coOMvdh5jpQ3YlguiToAJsALW8R4064ppa9Ll2vB+BtvyPlzIooTrPtmJos6F1nc95bnUg9D/eazjrPJZM+4hZpve7QqIMLASlj0e9Vxbk46py0FfhfVfD0M/icIvZzmpOI9nCmlLRy6lYc4KbMvSKE1MEMxBe10//bPOacaKv42c+LjVyPaPu1S5xHx33NalUcx3lPTZ4AoXwsidMm32KnMUzL0dG/gmFH8H6cNc69aR/0/FX8afaEXXviBmhWVbPgDhHxkTXhu6B0vdVrO6jtOJ/Sz01DSMxzMp2tKRAyi5EPV+Hys+CxTdjn8b9HW2wTuJ7eaIIP9j6DgbK613Vaxj9Ctx1Y0Dt6AYR25WigpRAkjuX9fPUqnXVBbRTiyo0G8mhJie61Z6IRKjHr9HMgiD/+pFiz1NSds68hGUnB4Zr5nDiPjDeCwShsCJECtRof5lW/mZhZ+7oh0bcuOoB2Z/GaXeUEe741HXUmzLJYzdYBybFjjW2DwVk7VsshqkHs/MoC3TD9sZZU+gYvvd7HHuv8mFxGdBpCF7/JhXrLQJ27IEwk2uutIGIFyPbT4XCyen/mdWwPL3Yfk1TrCiCpQ5Bro/5TZFSQE56DgbzVoWf0Jin9iZuru3Bolkezw14h15m6HU/tB5Pi7nOsAtyjIw6zIUVaNKSej+9KhjcD8Hc8s37oa+t2smP4YS5O+u2i7Lr8E2HIFtvQTbuhTbcDiWX13VuUHHaaj3XjR/Ddp7LUH3soralZLQXte5jciRh5U6ILEAdS6p2l6PZybR9qGVdiSY9SEsezI29CMggXInlRXOBLkTsOR3sIFbXTFL+mgnOh3MGnOchRuJVbK3YTdLrwILt0SZKWOzT2zLJdD7X1W1TJCCCdoRjzs2fQjMuxMb+HcoPYPSR0DuFKRMVed7PDMN78jbFKVei1Kv3c0x+1feZBw5Jn04NvCtGC3OJKQPrc6YobsqvGFOo3SCfPA9RYmXolkfqPu4Hk8j8KEVT22kj4TkgYxt3pRzRTDVbnaGfcRWb1JwVZQej2dC/IzcUxNSAHNuxgZuh6FVuFDNmZA7vfpBMkdC/xcpT4vMQrr2hlceT6vjHbmnZqR0mRDDpM5PHYDl3uZCLDtDNB2QfSukDqpqjJE2se1QC+DxjMc7cs+UY8V1Ttmo8GCUHXIxyowV3VD3csgcjw2uBEKUOwMyx+/WMVvYh/V9Cga/DxSx9GGo+xO+jbCnraiLI5d0OXAt0GtmM1PW3dMQrPgHbNMZTgKPEpTWYYWHse6PjentIgmyi1F2cfVjm2Gbz4sqNaO888L92Ka/hN67UWy+uMfTetS82SlpH+B4YF3t5nhaDev/QhQuGZ1rPgR9yycl4hHL8CORGs/o4iEDy2MDK2sb2+NpIuqRtXID8HfEF3R72p3Cg8T3fi9A6fnaxi4+DbESakNQ/FVtY3s8TURNjlzSacBzZvZonezxtBqJ3gpvlKBWQeLkfhXeyLkujR5Pm7DbGLmkHwNxqglXA1cBJ1RzIUlLgCUAr3jFKyZhoqeZUefF2LYrohj5CBkXDx9XJTppUgdCan8Yfpxd4ZUAlEW5d9Q2tsfTRGhP1b0l/SlwDzCSL/Zy4HngUDP740TnLlq0yNauXbtH1/U0H+GOb0L/5wC50v3MW9Fe18R3J5wkFu7A+q6BoTvc2Ok3o+6PoGQF1XuPp4mR9JCZLSp7fU8decwFfg8sqiZrxTvy9sMsD8V1kJiLgjmNNsfjaUoqOXKfR+6ZFqQMpF7TaDM8npakbo7czPat11gej8fjqR7fNMvj8XiaHO/IPR6Pp8nxjtzj8XiaHO/IPR6Pp8mpW/rhpC4qbQT+MIWXmAe0WvOuVrwnaM378vfUPDTbfb3SzMrKpRviyKcaSWvjci2bmVa8J2jN+/L31Dy0yn350IrH4/E0Od6RezweT5PTqo78a402YApoxXuC1rwvf0/NQ0vcV0vGyD0ej6edaNUZucfj8bQN3pF7PB5Pk9PyjlzS5ZJM0rxG21Irkq6V9GtJ/ytplaSmVReWdJKkJyQ9JWlZo+2pB5L2kfQTSb+S9LikSxttU72QlJD0sKTvNdqWeiBpL0m3R9+nX0k6otE21UJLO/IWFIa+G3iDmR0IPAl8uMH27BGSEsCXgbcBrwfOkvT6xlpVF4rAZWb2OuBw4P0tcl8AlwKtJIT6eeBOM9sfOIgmv7eWduS0mDC0mf3IdknP349TZWpGDgWeMrOnzawA/BtweoNtqhkzW29mv4h+7sM5hwWNtap2JL0cOAW4udG21ANJ3cAxwD8BmFnBzLY21qraaFlH3gbC0BcAP2y0EXvIAuCZUb8/Sws4vNFI2hc4GHigsZbUhc/hJkRhow2pEwuBjcA/R+GimyV1NtqoWmhqhaB6CUPPJCa6JzO7IzrmatwyfsV02lZHFPNaS6yaACR1Af8BfNDMtjfanlqQdCqwwcwekvSWRttTJ5LAG4GlZvaApM8Dy4CPNtasPaepHbmZLY57PRKGfhXwqCRwIYhfSNqtMHSjqXRPI0g6FzgVOM6atwjgWWC0OvKIcHfTIymFc+IrzGxlo+2pA0cBp0k6GcgC3ZK+ZWbnNNiuWngWeNbMRlZLt+McedPSFgVBkxGGnslIOgm4HjjWzDY22p49RVISt1l7HPAc8CBwtpk93lDDakRu1nALsNnMPthoe+pNNCO/3MxObbQttSLpp8CFZvaEpI8DnWZ2RYPN2mOaekbehnwJyAB3RyuN+83svY01afKYWVHSJcBdQAL4RrM78YijgL8G/k/SI9FrV5nZDxpokyeepcAKSWngaeD8BttTE20xI/d4PJ5WpmWzVjwej6dd8I7c4/F4mhzvyD0ej6fJ8Y7c4/F4mhzvyD0ej6fJ8Y7c4/F4mhzvyD0ej6fJ+X8xiXT3A48jDwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:, 0], X[:, 1], marker='o', c=y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "AdaBoostClassifier(algorithm='SAMME',\n",
       "                   base_estimator=DecisionTreeClassifier(class_weight=None,\n",
       "                                                         criterion='gini',\n",
       "                                                         max_depth=2,\n",
       "                                                         max_features=None,\n",
       "                                                         max_leaf_nodes=None,\n",
       "                                                         min_impurity_decrease=0.0,\n",
       "                                                         min_impurity_split=None,\n",
       "                                                         min_samples_leaf=5,\n",
       "                                                         min_samples_split=20,\n",
       "                                                         min_weight_fraction_leaf=0.0,\n",
       "                                                         presort=False,\n",
       "                                                         random_state=None,\n",
       "                                                         splitter='best'),\n",
       "                   learning_rate=0.8, n_estimators=200, random_state=None)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),\n",
    "                         algorithm=\"SAMME\",\n",
    "                         n_estimators=200, learning_rate=0.8)\n",
    "bdt.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n",
    "y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n",
    "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),\n",
    "                     np.arange(y_min, y_max, 0.02))\n",
    "\n",
    "Z = bdt.predict(np.c_[xx.ravel(), yy.ravel()])\n",
    "Z = Z.reshape(xx.shape)\n",
    "cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)\n",
    "plt.scatter(X[:, 0], X[:, 1], marker='o', c=y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score: 0.9133333333333333\n"
     ]
    }
   ],
   "source": [
    "print( \"Score:\", bdt.score(X,y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 弱分类器与步长\n",
    "弱分离器个数越多，则拟合程度越好，当然也越容易过拟合。   \n",
    "该例子中， 如果步长从0.8降到0.7，则弱分类器个数要从300增加到700才能达到类似的拟合效果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score: 0.9622222222222222\n"
     ]
    }
   ],
   "source": [
    "bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),\n",
    "                         algorithm=\"SAMME\",\n",
    "                         n_estimators=300, learning_rate=0.8)\n",
    "bdt.fit(X, y)\n",
    "print (\"Score:\", bdt.score(X,y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score: 0.8944444444444445\n"
     ]
    }
   ],
   "source": [
    "bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),\n",
    "                         algorithm=\"SAMME\",\n",
    "                         n_estimators=300, learning_rate=0.5)\n",
    "bdt.fit(X, y)\n",
    "print (\"Score:\", bdt.score(X,y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score: 0.9611111111111111\n"
     ]
    }
   ],
   "source": [
    "bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),\n",
    "                         algorithm=\"SAMME\",\n",
    "                         n_estimators=600, learning_rate=0.7)\n",
    "bdt.fit(X, y)\n",
    "print (\"Score:\", bdt.score(X,y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 习题8.1\n",
    "  某公司招聘职员考查身体、业务能力、发展潜力这3项。身体分为合格1、不合格0两级，业务能力和发展潜力分为上1、中2、下3三级分类为合格1 、不合格-1两类。已知10个人的数据，如下表所示。假设弱分类器为决策树桩。试用AdaBoost算法学习一个强分类器。\n",
    "\n",
    "应聘人员情况数据表如下\n",
    "\n",
    "  \t1\t2\t3\t4\t5\t6\t7\t8\t9\t10  \n",
    "身体\t0\t0\t1\t1\t1\t0\t1\t1\t1\t0  \n",
    "业务\t1\t3\t2\t1\t2\t1\t1\t1\t3\t2  \n",
    "潜力\t3\t1\t2\t3\t3\t2\t2\t1\t1\t1  \n",
    "分类\t-1\t-1\t-1\t-1\t-1\t-1\t1\t1\t-1\t-1  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "迭代次数: 6\n",
      "原始输出: [-1 -1 -1 -1 -1 -1  1  1 -1 -1]\n",
      "预测输出: [-1 -1 -1 -1 -1 -1  1  1 -1 -1]\n",
      "预测正确率：100.00%\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "# 加载训练数据\n",
    "X = np.array([[0, 1, 3], [0, 3, 1], [1, 2, 2], [1, 1, 3], [1, 2, 3], [0, 1, 2],\n",
    "              [1, 1, 2], [1, 1, 1], [1, 3, 1], [0, 2, 1]])\n",
    "y = np.array([-1, -1, -1, -1, -1, -1, 1, 1, -1, -1])\n",
    "\n",
    "# 自编程求解例8.1\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "class AdaBoost:\n",
    "    def __init__(self, X, y, tol=0.05, max_iter=10):\n",
    "        # 训练数据 实例\n",
    "        self.X = X\n",
    "        # 训练数据 标签\n",
    "        self.y = y\n",
    "        # 训练中止条件 right_rate>self.tol\n",
    "        self.tol = tol\n",
    "        # 最大迭代次数\n",
    "        self.max_iter = max_iter\n",
    "        # 初始化样本权重w\n",
    "        self.w = np.full((X.shape[0]), 1 / X.shape[0])\n",
    "        self.G = []  # 弱分类器\n",
    "\n",
    "    def build_stump(self):\n",
    "        \"\"\"\n",
    "        以带权重的分类误差最小为目标，选择最佳分类阈值\n",
    "        best_stump['dim'] 合适的特征所在维度\n",
    "        best_stump['thresh']  合适特征的阈值\n",
    "        best_stump['ineq']  树桩分类的标识lt,rt\n",
    "        \"\"\"\n",
    "        m, n = np.shape(self.X)\n",
    "        # 分类误差\n",
    "        e_min = np.inf\n",
    "        # 小于分类阈值的样本属于的标签类别\n",
    "        sign = None\n",
    "        # 最优分类树桩\n",
    "        best_stump = {}\n",
    "        for i in range(n):\n",
    "            range_min = self.X[:, i].min()  # 求每一种特征的最大最小值\n",
    "            range_max = self.X[:, i].max()\n",
    "            step_size = (range_max - range_min) / n\n",
    "            for j in range(-1, int(n) + 1):\n",
    "                thresh_val = range_min + j * step_size\n",
    "                # 计算左子树和右子树的误差\n",
    "                for inequal in ['lt', 'rt']:\n",
    "                    predict_vals = self.base_estimator(self.X, i, thresh_val,\n",
    "                                                       inequal)\n",
    "                    err_arr = np.array(np.ones(m))\n",
    "                    err_arr[predict_vals.T == self.y.T] = 0\n",
    "                    weighted_error = np.dot(self.w, err_arr)\n",
    "                    if weighted_error < e_min:\n",
    "                        e_min = weighted_error\n",
    "                        sign = predict_vals\n",
    "                        best_stump['dim'] = i\n",
    "                        best_stump['thresh'] = thresh_val\n",
    "                        best_stump['ineq'] = inequal\n",
    "        return best_stump, sign, e_min\n",
    "\n",
    "    def updata_w(self, alpha, predict):\n",
    "        \"\"\"\n",
    "        更新样本权重w\n",
    "        \"\"\"\n",
    "        # 以下2行根据公式8.4 8.5 更新样本权重\n",
    "        P = self.w * np.exp(-alpha * self.y * predict)\n",
    "        self.w = P / P.sum()\n",
    "\n",
    "    @staticmethod\n",
    "    def base_estimator(X, dimen, threshVal, threshIneq):\n",
    "        \"\"\"\n",
    "        计算单个弱分类器（决策树桩）预测输出\n",
    "        \"\"\"\n",
    "        ret_array = np.ones(np.shape(X)[0])  # 预测矩阵\n",
    "        # 左叶子 ，整个矩阵的样本进行比较赋值\n",
    "        if threshIneq == 'lt':\n",
    "            ret_array[X[:, dimen] <= threshVal] = -1.0\n",
    "        else:\n",
    "            ret_array[X[:, dimen] > threshVal] = -1.0\n",
    "        return ret_array\n",
    "\n",
    "    def fit(self):\n",
    "        \"\"\"\n",
    "        对训练数据进行学习\n",
    "        \"\"\"\n",
    "        G = 0\n",
    "        for i in range(self.max_iter):\n",
    "            best_stump, sign, error = self.build_stump()  # 获取当前迭代最佳分类阈值\n",
    "            alpha = 1 / 2 * np.log((1 - error) / error)  # 计算本轮弱分类器的系数\n",
    "            # 弱分类器权重\n",
    "            best_stump['alpha'] = alpha\n",
    "            # 保存弱分类器\n",
    "            self.G.append(best_stump)\n",
    "            # 以下3行计算当前总分类器（之前所有弱分类器加权和）分类效率\n",
    "            G += alpha * sign\n",
    "            y_predict = np.sign(G)\n",
    "            error_rate = np.sum(\n",
    "                np.abs(y_predict - self.y)) / 2 / self.y.shape[0]\n",
    "            if error_rate < self.tol:  # 满足中止条件 则跳出循环\n",
    "                print(\"迭代次数:\", i + 1)\n",
    "                break\n",
    "            else:\n",
    "                #原始的权重更新,原始代码这里是强分类器的结果y_predict,f(X)=g(x)1+g(x)2+g(x)3...，\n",
    "                #根据公式应该是最新的弱分类器的结果G(X). 而不是y_predict,\n",
    "                # y_predict 与 sign两者不相同\n",
    "                #self.updata_w(alpha, y_predict)\n",
    "                #print(y_predict,sign)\n",
    "                self.updata_w(alpha, sign)  # 若不满足，更新权重，继续迭代\n",
    "\n",
    "    def predict(self, X):\n",
    "        \"\"\"\n",
    "        对新数据进行预测\n",
    "        \"\"\"\n",
    "        m = np.shape(X)[0]\n",
    "        G = np.zeros(m)\n",
    "        for i in range(len(self.G)):\n",
    "            stump = self.G[i]\n",
    "            # 遍历每一个弱分类器，进行加权\n",
    "            _G = self.base_estimator(X, stump['dim'], stump['thresh'],\n",
    "                                     stump['ineq'])\n",
    "            alpha = stump['alpha']\n",
    "            G += alpha * _G\n",
    "        y_predict = np.sign(G)\n",
    "        return y_predict.astype(int)\n",
    "\n",
    "    def score(self, X, y):\n",
    "        \"\"\"对训练效果进行评价\"\"\"\n",
    "        y_predict = self.predict(X)\n",
    "        error_rate = np.sum(np.abs(y_predict - y)) / 2 / y.shape[0]\n",
    "        return 1 - error_rate\n",
    "\n",
    "\n",
    "clf = AdaBoost(X, y)\n",
    "clf.fit()\n",
    "y_predict = clf.predict(X)\n",
    "score = clf.score(X, y)\n",
    "print(\"原始输出:\", y)\n",
    "print(\"预测输出:\", y_predict)\n",
    "print(\"预测正确率：{:.2%}\".format(score))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Adaboost  \n",
    "在训练的时候每次都需要更新样本权重，依赖样本权重产生 弱分类器。 不可并行  \n",
    "在预测的时候，alpha和弱分类器都已固定，直接计算即可。可并行"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 统计学习方法 书中举得的例子\n",
    "参考 ：https://blog.csdn.net/a857553315/article/details/103217615  \n",
    "X:0, 1, 2, 3, 4, 5, 6, 7, 8, 9   \n",
    "Y:1,  1,  1, -1, -1, -1,  1,  1,  1, -1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 1 2 3 4 5 6 7 8 9] \n",
      " [ 1  1  1 -1 -1 -1  1  1  1 -1]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    " \n",
    "x = np.arange(10)\n",
    "y = np.array([1] * 3 + [-1] * 3 + [1] * 3 + [-1])\n",
    "w1 = np.array([.1] * 10)\n",
    "print(x,'\\n',y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.5 时错误率:0.600 错误率:0.4000\n",
      "0.5 时错误率:0.500 错误率:0.5000\n",
      "1.5 时错误率:0.400 错误率:0.6000\n",
      "2.5 时错误率:0.300 错误率:0.7000\n",
      "3.5 时错误率:0.400 错误率:0.6000\n",
      "4.5 时错误率:0.500 错误率:0.5000\n",
      "5.5 时错误率:0.600 错误率:0.4000\n",
      "6.5 时错误率:0.500 错误率:0.5000\n",
      "7.5 时错误率:0.400 错误率:0.6000\n",
      "8.5 时错误率:0.300 错误率:0.7000\n",
      "9.5 时错误率:0.400 错误率:0.6000\n"
     ]
    }
   ],
   "source": [
    "#寻找单分类的阈值\n",
    "for v1 in np.arange(-0.5, 10, 1):\n",
    "    G1 = [1 if i < v1 else -1 for i in range(10)]\n",
    "    err1 = ((G1 != y) * w1).sum()\n",
    "    print(v1, \"时错误率:%.3f\" % err1, end=' ')\n",
    "    \n",
    "    G1 = [-1 if i < v1 else 1 for i in range(10)]\n",
    "    err1 =((G1 != y) * w1).sum()\n",
    "    print(\"错误率:%.4f\"% err1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.3\n",
      "alpha1: 0.4236\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#v1 = 2.5  8.5时最优\n",
    "v1 = 2.5\n",
    "G1 = np.array([1 if i < v1 else -1 for i in range(10)])\n",
    "err1 = round(((G1 != y) * w1).sum(), 4)\n",
    "print(err1)\n",
    "alpha1 = round(np.log((1-err1)/err1) / 2, 4)\n",
    "print(\"alpha1:\", alpha1)\n",
    " \n",
    "f1 = np.sign(alpha1 * G1)\n",
    "(f1 == y).all()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 1,  1,  1, -1, -1, -1, -1, -1, -1, -1]),\n",
       " array([0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]),\n",
       " 0.4236,\n",
       " array([ 1.,  1.,  1., -1., -1., -1., -1., -1., -1., -1.]))"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G1,w1,alpha1,f1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.5 时错误率:0.7143 错误率:0.2857\n",
      "0.5 时错误率:0.6428 错误率:0.3572\n",
      "1.5 时错误率:0.5714 错误率:0.4286\n",
      "2.5 时错误率:0.5000 错误率:0.5000\n",
      "3.5 时错误率:0.5714 错误率:0.4286\n",
      "4.5 时错误率:0.6428 错误率:0.3572\n",
      "5.5 时错误率:0.7143 错误率:0.2857\n",
      "6.5 时错误率:0.5476 错误率:0.4524\n",
      "7.5 时错误率:0.3810 错误率:0.6190\n",
      "8.5 时错误率:0.2143 错误率:0.7857\n",
      "9.5 时错误率:0.2857 错误率:0.7143\n"
     ]
    }
   ],
   "source": [
    "#并没有完全为正确 ,设计第二个分类器\n",
    "w2 = (w1 * np.exp(-alpha1 * y * G1)) / (w1 * np.exp(-alpha1 * y * G1)).sum()\n",
    " \n",
    "for v2 in np.arange(-0.5, 10, 1):\n",
    "    G2 = np.array([1 if i < v2 else -1 for i in range(10)])\n",
    "    err2 =((G2 != y) * w2).sum()\n",
    "    print(v2, \"时错误率:%.4f\" % err2, end=' ')\n",
    "    \n",
    "    G2 = np.array([-1 if i < v2 else 1 for i in range(10)])\n",
    "    err2 =((G2 != y) * w2).sum()\n",
    "    print(\"错误率:%.4f\" % err2)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha2: 0.6496\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#最有阈值是8.5\n",
    "v2 = 8.5 \n",
    "G2 = np.array([1 if i < v2 else -1 for i in range(10)])\n",
    "err2 = round(((G2 != y) * w2).sum(), 4)\n",
    "alpha2 = round(np.log((1-err2)/err2) / 2, 4)\n",
    "print(\"alpha2:\", alpha2)\n",
    " \n",
    "f2 = np.sign(alpha1 * G1 + alpha2 * G2)\n",
    "(f2 == y).all()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.0732,  1.0732,  1.0732,  0.226 ,  0.226 ,  0.226 ,  0.226 ,\n",
       "        0.226 ,  0.226 , -1.0732])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "alpha1 * G1 + alpha2 * G2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 1,  1,  1,  1,  1,  1,  1,  1,  1, -1]),\n",
       " array([0.07143207, 0.07143207, 0.07143207, 0.07143207, 0.07143207,\n",
       "        0.07143207, 0.16665851, 0.16665851, 0.16665851, 0.07143207]),\n",
       " 0.6496,\n",
       " array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1., -1.]),\n",
       " 0.2143)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G2,w2,alpha2,f2,err2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.5 时前正后负的错误率:0.4545  前负后正的错误率:0.5455 \n",
      "0.5 时前正后负的错误率:0.4091  前负后正的错误率:0.5909 \n",
      "1.5 时前正后负的错误率:0.3636  前负后正的错误率:0.6364 \n",
      "2.5 时前正后负的错误率:0.3182  前负后正的错误率:0.6818 \n",
      "3.5 时前正后负的错误率:0.4848  前负后正的错误率:0.5152 \n",
      "4.5 时前正后负的错误率:0.6515  前负后正的错误率:0.3485 \n",
      "5.5 时前正后负的错误率:0.8182  前负后正的错误率:0.1818 \n",
      "6.5 时前正后负的错误率:0.7121  前负后正的错误率:0.2879 \n",
      "7.5 时前正后负的错误率:0.6061  前负后正的错误率:0.3939 \n",
      "8.5 时前正后负的错误率:0.5000  前负后正的错误率:0.5000 \n",
      "9.5 时前正后负的错误率:0.5455  前负后正的错误率:0.4545 \n"
     ]
    }
   ],
   "source": [
    "#设计第三个分类器\n",
    "w3 = (w2 * np.exp(-alpha2 * y * G2)) / (w2 * np.exp(-alpha2 * y * G2)).sum()\n",
    " \n",
    "for v3 in np.arange(-0.5, 10, 1):\n",
    "    G3 = np.array([1 if i < v3 else -1 for i in range(10)])\n",
    "    err3 =((G3 != y) * w3).sum()\n",
    "    print(v3, \"时前正后负的错误率:%.4f \" % err3, end=' ')\n",
    "    \n",
    "    G3 = np.array([-1 if i < v3 else 1 for i in range(10)])\n",
    "    err3 =((G3 != y) * w3).sum()\n",
    "    print(\"前负后正的错误率:%.4f \" % err3)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "apha3: 0.7521\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#阈值最优的是5.5,但是注意是前负后正\n",
    "v3 = 5.5 \n",
    "G3 = np.array([-1 if i < v3 else 1 for i in range(10)])\n",
    "err3 = round(((G3 != y) * w3).sum(), 4)\n",
    "alpha3 = round(np.log((1 - err3) / err3) / 2, 4)\n",
    "print(\"apha3:\", alpha3)\n",
    " \n",
    "f3 = np.sign(alpha1 * G1 + alpha2 * G2 + alpha3 * G3)\n",
    "(f3 == y).all()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([-1, -1, -1, -1, -1, -1,  1,  1,  1,  1]),\n",
       " array([0.04545785, 0.04545785, 0.04545785, 0.16666494, 0.16666494,\n",
       "        0.16666494, 0.10605793, 0.10605793, 0.10605793, 0.04545785]),\n",
       " 0.7521,\n",
       " array([ 1.,  1.,  1., -1., -1., -1.,  1.,  1.,  1., -1.]))"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G3,w3,alpha3,f3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第三个分类器的系数是0.7521,分类器完全预测正确.  \n",
    "\n",
    "综上, 最终的分类器是:  \n",
    "f = 0.4236 * G1 + 0.6496 * G2 + 0.7521 * G3"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
